js 现实对象数组按id求和,并生成一个对象数组
时间: 2023-11-03 09:06:05 浏览: 49
假设现在有一个实际对象数组,其中每个对象都有一个 id 属性和一个 value 属性,我们可以使用以下代码将它们按照 id 求和,并生成一个新的对象数组:
```javascript
// 假设现在有一个实际对象数组 arr
const arr = [
{ id: 1, value: 10 },
{ id: 2, value: 20 },
{ id: 3, value: 30 },
{ id: 1, value: 40 },
{ id: 2, value: 50 },
{ id: 3, value: 60 },
];
// 将数组按照 id 分组,并将每组的 value 求和
const sumById = {};
arr.forEach(item => {
const { id, value } = item;
if (!sumById[id]) {
sumById[id] = value;
} else {
sumById[id] += value;
}
});
// 将求和后的结果转换为对象数组
const result = Object.keys(sumById).map(id => ({
id: parseInt(id),
value: sumById[id],
}));
console.log(result); // 输出 [{ id: 1, value: 50 }, { id: 2, value: 70 }, { id: 3, value: 90 }]
```
在上面的代码中,我们首先使用 forEach 方法遍历原始数组,将每个对象按照 id 分组,并将每组的 value 求和,存储在一个名为 sumById 的对象中。
然后,我们使用 Object.keys 方法获取 sumById 对象的所有键(即 id 值),并使用 map 方法将每个键和对应的求和值转换为一个新的对象,存储在 result 数组中。
最终,我们得到了按照 id 求和后的新的对象数组。