我可以在JS中迭代和更新地图中对象中的值吗?

时间:2017-06-19 17:36:36

标签: javascript ecmascript-6

简单而简单我想为足球联赛建立一个积分榜。我的想法是构建一个带有标签(teamName)和一个对象(teamCompetitionStats)的地图。所以我创建了一个这样的类:

export class TeamCompetitionStats {
    teamMatches: number;
    teamPoints: number;
}

我的想法是创建一个包含团队名称的地图,以及像这样的团队竞赛统计数据:

map('Barcelona', TeamCompetitionStats) 

所以当我遍历每场比赛时,我会检查我是否有团队,如果没有,我会使用teamName + TeamCompetitionStats向地图添加一个条目,如果它已经存在,我会更新TeamCompetitionStats中的值。

问题在于我不知道如何更新地图中对象的值(在本例中为TeamCompetitionStats)。

不是特别寻找一段代码,而只是审查是否有可能并且我在正确的道路上或

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

检查对象是否与has一起存储。

如果是更新所述对象,如果没有则存储它。

let a = myMap.get(whatever)
if(a)
  updateItem(a)
else
   map.set(key, val);
  

有更好的方法吗?

Imo,简单对象适用于这种情况。

let teams  = {"teamA": "sickteam", "teamB": "not so sick"};

if (teams["teamC"])
 teams["teamC"] = "team of clownssssss";
else
 teams["teamC"] = "team of clowns";

答案 1 :(得分:0)

当然可以。查看Object.assign

您的来源是您的新数据,目标是整体对象。如果源不匹配目标中的任何内容,则会添加它。如果它与目标中的某些内容匹配,则会更新。

  

如果目标对象中的属性具有相同的键,则它们将被源中的属性覆盖。后来的消息来源'属性将类似地覆盖先前的属性。