Javascript 如何在typescript中对值进行分组和求和
我试图得到唯一的用户名和他们的总时间,但不知道如何实现这一点。 我已经做的是一个数组的唯一名称,但不知道如何获得总和。 我认为这应该通过使用字典这样的结构来实现。Javascript 如何在typescript中对值进行分组和求和,javascript,angular,typescript,Javascript,Angular,Typescript,我试图得到唯一的用户名和他们的总时间,但不知道如何实现这一点。 我已经做的是一个数组的唯一名称,但不知道如何获得总和。 我认为这应该通过使用字典这样的结构来实现。 字典但typescript中似乎不存在此结构 let json=[{“用户”:“汤姆·史密斯”,“小时数”:6},{“用户”:“马克·扎克伯格”,“小时数”:8},{“用户”:“埃隆·马斯克”,“小时数”:12},{“用户”:“汤姆·史密斯”,“小时数”:1},{“用户”:“汤姆·史密斯”,“小时数”:1}]; for(var i=0
字典
但typescript中似乎不存在此结构
let json=[{“用户”:“汤姆·史密斯”,“小时数”:6},{“用户”:“马克·扎克伯格”,“小时数”:8},{“用户”:“埃隆·马斯克”,“小时数”:12},{“用户”:“汤姆·史密斯”,“小时数”:1},{“用户”:“汤姆·史密斯”,“小时数”:1}];
for(var i=0;ia==json[i].User))
{
userNames.push(json[i].User);
}
}
结果应该是:
- 汤姆·史密斯→ 8小时
- 马克·扎克伯格→ 8小时
- 埃隆麝香→ 12小时
- 它被称为
Map
:
const usernames = new Map<string, number>();
for(const {User, Hours} of json)
usernames.set(User, (usernames.get(User) || 0) + Hours);
console.log([...usernames]);
const usernames=newmap();
for(json的常量{User,Hours})
usernames.set(User,(usernames.get(User)| | 0)+小时);
log([…用户名]);
哇,这就是我一直在寻找的东西!这是可行的,但为了更好的可读性,我简化了json的结构。如果结构稍微复杂一点/嵌套一点怎么办?没关系,我发现我所要做的就是在for循环中传递正确的路径。再次感谢乔纳斯@泰尔科纳奇很乐意帮忙:)