修改 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 循环中编写函数逻辑。对于如此小而直接的逻辑,单独的函数可能很麻烦。