У меня есть массив объектов, который выглядит следующим образом:
var array = [{name: "john", points: 20},
{name: "jack", points: 12},
{name: "john", points: 10},
{name: "jack", points: 2},
{name: "bill", points: 4}]
Из этого массива я хотел бы создать новый массив с суммой точек на имя, как правило, так:
var newArray = [{name: "john", points:30},
{name: "jack", points:14},
{name: "bill", points:4}]
Я написал следующую функцию, которая хорошо работает.
function filterArray(array){
var newArray=[]
for (i in array){
var index=newArray.map(x=>x.name).indexOf(array[i].name)
if (index==-1){
newArray.push(array[i])
}
else{
newArray[index].points+=array[i].points
}
}
return newArray;
}
Однако я хотел бы использовать что-то более элегантное, например функцию .reduce ().Кто-нибудь знает, как это можно сделать?