如何在打字稿中分组和求和

时间:2018-04-08 12:39:07

标签: javascript angular typescript

我正在尝试获取唯一的用户名和他们的总时间,但不知道如何实现这一目标。 我已经做的是一系列独特的名字,但不知道如何获得总和。 我认为这应该通过使用类似字典的结构来实现。 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);
            }
        }

结果应该是:

汤姆史密斯8小时

Mark Zuckerberg 8小时

埃隆马斯克12小时

1 个答案:

答案 0 :(得分:3)

名为Map

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

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

 console.log([...usernames]);