【问题标题】:Modifying an objects property inside a forEach loop在 forEach 循环中修改对象属性
【发布时间】:2020-06-05 07:46:45
【问题描述】:

我正在寻找设置

opponent = search_abbreviation

teams 是一组团队对象,在循环之前看起来像:

var team = {
          teamId: team_id,
          teamAbbreviation: abbreviation,
          gamePlayedId: game_id,
          totalPlaysFor: offensePlays,
          totalYardsFor: offenseYds,
          yardsPerPlayFor: offenseAvgYds,
          opponent: '',
          totalPlaysAgainst: 0,
          totalYardsAgainst: 0,
          yardsPerPlayAgainst: 0
        };

我有以下代码通过匹配 gamePlayedId 来找到对手,然后它会更新防守(对抗)统计数据和对手属性。我做错了什么,不允许我修改对手的属性?

var teams = [
{
          teamId: 0,
          teamAbbreviation: 'abbreviation1',
          gamePlayedId: 11,
          totalPlaysFor: 12,
          totalYardsFor: 13,
          yardsPerPlayFor: 14,
          opponent: 'op',
          totalPlaysAgainst: 0,
          totalYardsAgainst: 0,
          yardsPerPlayAgainst: 0
},
{
          teamId: 1,
          teamAbbreviation: 'abbreviation2',
          gamePlayedId: 11,
          totalPlaysFor: 12,
          totalYardsFor: 13,
          yardsPerPlayFor: 14,
          opponent: 'op2',
          totalPlaysAgainst: 0,
          totalYardsAgainst: 0,
          yardsPerPlayAgainst: 0
}];

const result = teams.forEach(({ teamAbbreviation, gamePlayedId, teamId }) => {
      var search_gamePlayedId = gamePlayedId;
      var search_teamId = teamId;
      var search_abbreviation = teamAbbreviation;
      teams.forEach(({ opponent, gamePlayedId, teamId }) => {
        if (search_gamePlayedId === gamePlayedId && search_teamId !== teamId) {
          opponent = search_abbreviation;
          // Modify more properties
        }
      });
    });
    
console.log(result)

【问题讨论】:

    标签: javascript object foreach properties


    【解决方案1】:
    teams.forEach( (team1) ) => {
      teams.forEach( (team2) => {
        if (team1.gamePlayedId === team2.gamePlayedId && team1.teamId !== team2.teamId) {
          team2.opponent = team1.teamAbbreviation;
          // Modify more properties
        }
      });
    });
    

    【讨论】:

    • 我没有想到这一点,但它似乎给了我我正在寻找的东西。现在,这给我带来的好处超出了我发布的内容。非常感谢!
    【解决方案2】:

    opponent 链接到与您的代码中的 teams[n].opponent 不同的内存空间。

    teams.forEach(({ opponent, gamePlayedId, teamId }, index) => {... // adding index
    
    // then 
    teams[index].opponent = 'something'
    

    teams.forEach(team => {
        team.opponent = 'something'
    })
    

    【讨论】:

      猜你喜欢
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      相关资源
      最近更新 更多