代码之家  ›  专栏  ›  技术社区  ›  Andrea De Luca

修改forEach中的元素使条目加倍

  •  0
  • Andrea De Luca  · 技术社区  · 2 年前

    我目前正在设置此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所说的,这是一个逻辑错误,我正在传递记分板[元素]+100作为参数,然后再次在记分板[球员]+积分中使用记分板[元素]。

    1 回复  |  直到 2 年前
        1
  •  0
  •   Arjis Chakraborty    2 年前

    你可以简单地写下:

    export function applyMondayBonus(scoreBoard = {}){
       Object.keys(scoreBoard).forEach(player => {
          scoreBoard[player] += 100
       })
       return scoreBoard
    }
    

    我的建议是直接在 forEach 环对于这样小而直接的逻辑,单独的函数可能会很麻烦。