把对象中多个数组中多个对象中的重复id的值相加
时间: 2024-05-03 19:22:58 浏览: 97
可以使用循环遍历每个数组中的每个对象,将id相同的对象的值相加,然后用一个新的数组来保存结果。具体实现如下:
```
function sumObjectsById(obj) {
var result = []; // 用于保存结果的数组
var temp = {}; // 用于保存临时的id和值的对象
// 循环遍历每个数组中的每个对象
for (var i = 0; i < obj.length; i++) {
var arr = obj[i]; // 取出当前数组
for (var j = 0; j < arr.length; j++) {
var o = arr[j]; // 取出当前对象
var id = o.id; // 取出当前对象的id
if (temp[id]) {
// 如果temp中已经存在该id,则将其值相加
temp[id].value += o.value;
} else {
// 如果temp中不存在该id,则将其添加到temp中
temp[id] = { id: id, value: o.value };
}
}
}
// 将temp中的对象转为数组,并保存到result中
for (var key in temp) {
result.push(temp[key]);
}
return result;
}
```
使用示例:
```
var obj = [
[
{ id: 1, value: 10 },
{ id: 2, value: 20 },
{ id: 3, value: 30 }
],
[
{ id: 2, value: 15 },
{ id: 4, value: 25 }
],
[
{ id: 1, value: 5 },
{ id: 3, value: 10 },
{ id: 5, value: 15 }
]
];
var result = sumObjectsById(obj);
console.log(result);
// 输出:[
// { id: 1, value: 15 },
// { id: 2, value: 35 },
// { id: 3, value: 40 },
// { id: 4, value: 25 },
// { id: 5, value: 15 }
// ]
```
阅读全文