获取对象中的多个数组中的对象 把对象数组中获取到的相同id的值相加生成新的数组并把每个id的值合并成新的数组
时间: 2023-12-19 10:52:57 浏览: 34
假设我们有以下对象数组:
```javascript
const arr = [
{
id: 1,
value: 10
},
{
id: 2,
value: 20
},
{
id: 1,
value: 5
},
{
id: 3,
value: 15
},
{
id: 2,
value: 5
},
{
id: 1,
value: 7
}
];
```
我们想要把相同 `id` 的对象的 `value` 相加,生成一个新的数组,每个 `id` 对应一个对象。我们可以使用 `reduce` 方法来实现:
```javascript
const result = arr.reduce((acc, curr) => {
const existingObj = acc.find(obj => obj.id === curr.id);
if (existingObj) {
existingObj.value += curr.value;
} else {
acc.push({ id: curr.id, value: curr.value });
}
return acc;
}, []);
```
这里我们用 `reduce` 方法将原始数组转换成一个新的数组。我们使用 `find` 方法查找已存在的对象,如果找到了,将其 `value` 相加。如果没有找到,我们创建一个新的对象并将其添加到结果数组中。最后返回结果数组。
这将返回以下结果:
```javascript
[
{
id: 1,
value: 22
},
{
id: 2,
value: 25
},
{
id: 3,
value: 15
}
]
```
这个新数组中有三个对象,每个对象都有一个 `id` 和一个 `value` 属性。 `value` 属性是相同 `id` 的对象的 `value` 属性相加的结果。