javascript - Hur man grupperar och summerar värden i typescript
Jag försöker få unika användarnamn och deras totala tid, men vet inte hur jag ska uppnå detta. Det jag redan har gjort är en array med unika namn, men vet inte hur man får summan. Jag tror att detta borde uppnås genom att använda en struktur som en dictionary till exempel Dictionary<string,int>, men denna struktur verkar inte finnas i TypeScript.
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);
}
}
Resultatet bör vara:
- Tom Smith → 8 timmar
- Mark Zuckerberg → 8 timmar
- Elon Musk → 12 timmar
Svar #1
Det kallas Map:
const usernames = new Map<string, number>();
for(const {User, Hours} of json)
usernames.set(User, (usernames.get(User) || 0) + Hours);
console.log([...usernames]);
