Допустим, у меня есть этот массив объектов:
[{
a: "test", b: "5", c: 4
},
{
a: "test 2", b: "2", c: 10
},
{
a: "test", b: "5", c: 66
}]
Я хочу объединить объекты, где свойства a
& b
равны в каждом объекте, поэтому я получаю:
[{
a: "test", b: "5", c: 70
},
{
a: "test 2", b: "2", c: 10
}]
Я могу справиться с этим в нескольких циклах for, например.
const a = [];
for(let item of data) {
const dateTime = new Date(item.T);
const time = dateTime.getHours()+":"+dateTime.getMinutes()+":"+dateTime.getSeconds();
const id = item.p+time+item.m;
if (a[id]) {
a[id].q = (parseFloat(a[id].q) + parseFloat(item.q)).toFixed(8)
} else {
a[id] = item;
}
}
const b = [];
for (var key in a) {
b.push(a[key]); // converts to numbered array
}
return b;
... но мне было интересно, есть ли более оптимальный путь?