如何把数组对象相同的key值合并成一个新数组
时间: 2024-01-21 18:19:48 浏览: 76
假设有一个包含多个对象的数组,每个对象都有相同的key值,你可以使用`reduce()`方法将具有相同key值的对象合并成一个新数组。
这里是一个示例代码:
```javascript
const arr = [
{ key: 'a', value: 1 },
{ key: 'b', value: 2 },
{ key: 'a', value: 3 },
{ key: 'c', value: 4 },
{ key: 'b', value: 5 }
];
const result = arr.reduce((acc, curr) => {
const index = acc.findIndex(item => item.key === curr.key);
if (index === -1) {
acc.push({ key: curr.key, values: [curr.value] });
} else {
acc[index].values.push(curr.value);
}
return acc;
}, []);
console.log(result);
```
输出结果为:
```javascript
[
{ key: 'a', values: [ 1, 3 ] },
{ key: 'b', values: [ 2, 5 ] },
{ key: 'c', values: [ 4 ] }
]
```
在上面的代码中,我们使用了`reduce()`方法和`findIndex()`方法来判断是否已经存在具有相同key值的对象。如果不存在,则将其添加到新数组中,如果存在,则将其值添加到已经存在的对象中。最后返回新数组即可。
阅读全文