把对象中5个数组8个对象中id相同的value值相加,数据结构不变
时间: 2024-05-01 20:17:06 浏览: 20
以下是一种可能的实现方法:
```javascript
function sumById(obj) {
const idMap = {}; // 用于存储相同id的对象集合
const result = {}; // 用于存储结果
// 遍历对象中的每个数组
Object.values(obj).forEach((arr) => {
// 遍历数组中的每个对象
arr.forEach((item) => {
const { id, value } = item;
if (!idMap[id]) {
idMap[id] = []; // 如果id没有出现过,则初始化为一个空数组
}
idMap[id].push(value); // 将当前对象的value值加入id对应的数组中
});
});
// 遍历idMap中每个id对应的数组,并计算它们的总和
Object.entries(idMap).forEach(([id, values]) => {
const sum = values.reduce((acc, cur) => acc + cur, 0);
result[id] = sum; // 将计算结果存入result对象中
});
return result;
}
```
这个函数接受一个对象作为参数,对象中包含5个数组,每个数组中包含8个对象,每个对象都有一个id和一个value属性。函数的返回值也是一个对象,其中每个属性都对应一个id,属性值为这个id在原对象中所有对象的value值的总和。
该函数的思路是先遍历原对象中的每个对象,将它们按照id分组,并将它们的value值加入对应id的数组中。然后遍历idMap中每个id对应的数组,计算它们的总和,并将计算结果存入result对象中。最后返回result对象即可。