如何对打字稿中的值进行分组和求和

tyl*_*ile 2 javascript typescript angular

我正在尝试获取唯一的用户名及其总时间,但不知道如何实现。我已经做过的是一组唯一的名称,但是不知道如何获取总和。我认为这应该通过使用像ex的字典这样的结构来实现。 Dictionary<string,int>但是这种结构似乎在打字稿中不存在。

let json = [{"User":"Tom Smith","Hours": 6},{"User":"Mark Zuckerberg","Hours": 8},{"User":"Elon Musk","Hours": 12},{"User":"Tom Smith","Hours": 1},{"User":"Tom Smith","Hours": 1}];

for(var i  = 0; i < json.length; i++)
{
    if(!userNames.find(a => a == json[i].User))
    {
        userNames.push(json[i].User);
    }
}
Run Code Online (Sandbox Code Playgroud)

结果应为:

  • 汤姆·史密斯→8小时
  • 马克·扎克伯格→8小时
  • 伊隆·马斯克→12小时

Jon*_*lms 5

它叫做Map

 const usernames = new Map<string, number>();

 for(const {User, Hours} of json) 
   usernames.set(User, (usernames.get(User) || 0) + Hours);

 console.log([...usernames]);
Run Code Online (Sandbox Code Playgroud)