数组去重去掉数组内每一个对象的相同属性
时间: 2023-07-19 20:51:27 浏览: 180
好的,针对您的问题,可以使用 JavaScript 中的 reduce 和 findIndex 方法来实现。具体实现如下:
假设我们有一个数组 arr,每个对象都有属性 a 和 b,我们需要根据属性 a 进行去重,并且在去重后,每个对象的属性 b 不能相同。
```
const arr = [
{a: 1, b: 'apple'},
{a: 2, b: 'banana'},
{a: 1, b: 'peach'},
{a: 3, b: 'apple'},
{a: 1, b: 'orange'}
];
const result = arr.reduce((acc, cur) => {
const index = acc.findIndex(item => item.a === cur.a);
if (index === -1) {
acc.push(cur);
} else if (acc[index].b !== cur.b) {
acc[index].b = `${acc[index].b} and ${cur.b}`;
}
return acc;
}, []);
console.log(result);
// Output: [
// {a: 1, b: 'apple and peach and orange'},
// {a: 2, b: 'banana'},
// {a: 3, b: 'apple'}
// ]
```
以上代码中,我们使用 reduce 方法对数组进行遍历和操作。在每一次遍历中,我们使用 findIndex 方法来查找是否存在属性 a 相同的对象,如果不存在,则将当前对象添加到结果数组 acc 中。如果存在,我们需要判断当前对象的属性 b 是否与已存在对象的属性 b 相同,如果不同,则将其合并起来。
最终我们得到的结果为:
```
[
{a: 1, b: 'apple and peach and orange'},
{a: 2, b: 'banana'},
{a: 3, b: 'apple'}
]
```
阅读全文