我有两个对象数组,我想对具有相同键(在本例中为 id)的对象求和,如果没有匹配键,则只需创建一个新的。如果我是,我很抱歉没有解释清楚,我对 JavaScript/Array/Object 很陌生......
var dataOne = [ { id:"1", total: 10, win: 5 }, { id:"2", total: 5, win: 1 }, { id:"3", total: 5, win: 2 } ]
and
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 } ]
我尝试使用来自的解决方案将对象数组中的所有数据求和到新的对象数组中 https://stackoverflow.com/questions/52479107/sum-all-data-in-array-of-objects-into-new-array-of-objects但是,显然数据类型有点不同
所以,我尝试使用这种方法Javascript - 具有相同属性的两个对象的总和 https://stackoverflow.com/questions/42488048/javascript-sum-of-two-object-with-same-properties
function sumObjectsByKey(...objs) {
for (var prop in n) {
if (acc.hasOwnProperty(prop)) acc[prop] += n[prop];
else acc[prop] = n[prop];
}
return acc;
}
and
var combinedData = sumObjectsByKey(dataOne, dataTwo);
但显然,该方法不适用于对象数组。
我明白了
{0: "0[object Object][object Object]", 1: "0[object Object][object Object]", 2: "0[object Object][object Object]"}
因此。