У меня есть два массива объектов, и я хочу суммировать объект с одинаковым ключом (в данном случае, id), и если ключа совпадения нет, просто создайте новый .. Извинитеесли я не объясняю это ясно, я новичок в JavaScript / Array / Object вещь ...
var dataOne = [ { id:"1", total: 10, win: 5 }, { id:"2", total: 5, win: 1 }, { id:"3", total: 5, win: 2 } ]
и
var dataTwo = [ { id:"1", total: 5, win: 2 }, { id:"2", total: 2, win: 3 }, { id:"5", total: 5, win: 4 } ]
Ожидаемый результат:
var combinedData = [ { id:"1", total: 15, win: 7 }, { id:"2", total: 7, win: 4 }, { id:"3", total: 5, win: 2 }, { id:"5", total: 5, win: 4 } ]
Я пытался использовать решение из Суммировать все данные в массиве объектов в новый массив объектов , но, очевидно, тип данных отличается от
Итак, я попыталсяиспользуйте этот метод из Javascript - сумма двух объектов с одинаковыми свойствами
function sumObjectsByKey(...objs) {
for (var prop in n) {
if (acc.hasOwnProperty(prop)) acc[prop] += n[prop];
else acc[prop] = n[prop];
}
return acc;
}
и
var combinedData = sumObjectsByKey(dataOne, dataTwo);
Но, очевидно, этот метод не будет работать для массиваобъектов.В результате я получаю
{0: "0[object Object][object Object]", 1: "0[object Object][object Object]", 2: "0[object Object][object Object]"}
.