let arr = [{ a: "xinxin" },{ a: "pipi" },{ a: "zhazha" },{ a: "xinxin", c: 1 } ];使用reduce实现合并相同的key
时间: 2023-09-21 19:11:42 浏览: 45
const result = arr.reduce((acc, cur) => {
const foundIndex = acc.findIndex(item => item.a === cur.a);
if (foundIndex !== -1) {
acc[foundIndex] = { ...acc[foundIndex], ...cur };
} else {
acc.push(cur);
}
return acc;
}, []);
console.log(result); // [{ a: "xinxin", c: 1 }, { a: "pipi" }, { a: "zhazha" }]
相关问题
let arr = [{a:'xinxin'}, {a:'pipi'}, {a:'zhazha'}, {a:'xinxin', c:1}];合并相同的可以
用reduce方法实现,遍历数组中的每个元素,如果已经在结果数组中存在相同的元素,则将其属性合并,否则将其添加到结果数组中。
代码如下:
```
let arr = [{a:'xinxin'}, {a:'pipi'}, {a:'zhazha'}, {a:'xinxin', c:1}];
let result = arr.reduce((acc, curr) => {
let existing = acc.find(item => item.a === curr.a);
if (existing) {
Object.assign(existing, curr);
} else {
acc.push(curr);
}
return acc;
}, []);
console.log(result);
```
输出结果为:
```
[{a: "xinxin", c: 1}, {a: "pipi"}, {a: "zhazha"}]
```
let arr = [{a:'xinxin'}, {a:'pipi'}, {a:'zhazha'}, {a:'xinxin', c:1}];根据key值合并数据
可以使用reduce方法来合并数据,首先定义一个空对象作为初始值,然后遍历数组中的每一个对象,将其key值作为新对象的属性名,将其value值作为新对象的属性值,如果新对象已经存在该属性名,就将两个对象合并。
代码实现如下:
```
let arr = [{a:'xinxin'}, {a:'pipi'}, {a:'zhazha'}, {a:'xinxin', c:1}];
let mergedObj = arr.reduce((acc, cur) => {
let key = Object.keys(cur)[0];
if (key in acc) {
acc[key] = Object.assign(acc[key], cur);
} else {
acc[key] = cur;
}
return acc;
}, {});
console.log(mergedObj);
```
输出结果为:
```
{
a: {a: "xinxin", c: 1},
pipi: {a: "pipi"},
zhazha: {a: "zhazha"}
}
```
可以看到,原数组中有两个对象的key值是相同的,经过合并后,它们被合并到了同一个属性名下。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)