修改 forEach 中的元素使条目加倍
Modify an element in forEach doubles the entries
我目前正在设置这个 js 练习 here 但是它似乎无法正常工作,因为我得到了所有条目的重复,我不明白为什么。
代码如下:
export function updateScore(scoreBoard, player, points) {
scoreBoard[player] = scoreBoard[player] + points;
return scoreBoard;
}
export function applyMondayBonus(scoreBoard) {
Object.keys(scoreBoard).forEach((element) =>{
updateScore(scoreBoard,element,scoreBoard[element] + 100)
} );
return scoreBoard;
}
一旦我 运行 代码:我得到了这个输出
Object {
- "Amil Pastorius": 445,
- "Jesse Johnson": 222,
- "Min-seo Shin": 119,
+ "Amil Pastorius": 790,
+ "Jesse Johnson": 344,
+ "Min-seo Shin": 138,
}
而不是这个
{
'Amil Pastorius': 445,
'Min-seo Shin': 119,
'Jesse Johnson': 222,
};
提前致谢
编辑:糟糕,正如@Ivar 所说,这是一个逻辑错误,我将 scoreBoard[element] + 100 作为参数传递,然后再次在 scoreBoard[player] + points 中使用 scoreBoard[element]。
你可以非常简单地写:
export function applyMondayBonus(scoreBoard = {}){
Object.keys(scoreBoard).forEach(player => {
scoreBoard[player] += 100
})
return scoreBoard
}
我的建议是直接在 forEach
循环中编写函数逻辑。对于如此小而直接的逻辑,单独的函数可能很麻烦。
我目前正在设置这个 js 练习 here 但是它似乎无法正常工作,因为我得到了所有条目的重复,我不明白为什么。
代码如下:
export function updateScore(scoreBoard, player, points) {
scoreBoard[player] = scoreBoard[player] + points;
return scoreBoard;
}
export function applyMondayBonus(scoreBoard) {
Object.keys(scoreBoard).forEach((element) =>{
updateScore(scoreBoard,element,scoreBoard[element] + 100)
} );
return scoreBoard;
}
一旦我 运行 代码:我得到了这个输出
Object {
- "Amil Pastorius": 445,
- "Jesse Johnson": 222,
- "Min-seo Shin": 119,
+ "Amil Pastorius": 790,
+ "Jesse Johnson": 344,
+ "Min-seo Shin": 138,
}
而不是这个
{
'Amil Pastorius': 445,
'Min-seo Shin': 119,
'Jesse Johnson': 222,
};
提前致谢
编辑:糟糕,正如@Ivar 所说,这是一个逻辑错误,我将 scoreBoard[element] + 100 作为参数传递,然后再次在 scoreBoard[player] + points 中使用 scoreBoard[element]。
你可以非常简单地写:
export function applyMondayBonus(scoreBoard = {}){
Object.keys(scoreBoard).forEach(player => {
scoreBoard[player] += 100
})
return scoreBoard
}
我的建议是直接在 forEach
循环中编写函数逻辑。对于如此小而直接的逻辑,单独的函数可能很麻烦。