把对象中多个数组对象id相同的value相加,生成原来结构的新数组
时间: 2024-05-09 10:19:36 浏览: 119
vue 对象数组中,根据相同属性的数据合并,重组新的数组对象
假设有一个对象数组arr,每个对象中有一个id属性和一个value属性,现在需要对id相同的value进行求和,并返回一个新的对象数组。可以按照以下步骤实现:
1. 定义一个空对象newObj,用于存储求和后的结果。
2. 遍历原数组arr,对于每个对象,判断其id属性是否已经在newObj中存在。
- 如果不存在,则在newObj中添加一个新的属性,属性名为该对象的id,属性值为该对象的value。
- 如果已经存在,则将该对象的value与newObj中已有属性的值相加,更新newObj中该属性的值。
3. 将newObj中的属性转换为对象数组,返回结果。
以下是示例代码实现:
```javascript
function sumArrayObjects(arr) {
let newObj = {};
for (let obj of arr) {
let id = obj.id;
let value = obj.value;
if (!newObj[id]) {
newObj[id] = value;
} else {
newObj[id] += value;
}
}
let newArray = Object.keys(newObj).map(id => ({id, value: newObj[id]}));
return newArray;
}
```
使用示例:
```javascript
let arr = [
{id: 'a', value: 1},
{id: 'b', value: 2},
{id: 'a', value: 3},
{id: 'c', value: 4},
{id: 'b', value: 5}
];
let newArray = sumArrayObjects(arr);
console.log(newArray);
// [{id: 'a', value: 4}, {id: 'b', value: 7}, {id: 'c', value: 4}]
```
阅读全文