数组对象按某个相同属性值去重
时间: 2023-07-27 15:32:08 浏览: 192
js代码-数组 对象去重 (对象的所有属性相同才能认为相同)
可以使用 JavaScript 中的 reduce 和 findIndex 方法来实现按某个相同属性值去重的功能。
假设要按照对象的 name 属性值去重,代码示例如下:
```javascript
const arr = [
{ name: 'apple', price: 1 },
{ name: 'orange', price: 2 },
{ name: 'apple', price: 3 },
{ name: 'banana', price: 4 },
{ name: 'orange', price: 5 },
];
const result = arr.reduce((acc, cur) => {
const index = acc.findIndex(item => item.name === cur.name);
if (index === -1) {
acc.push(cur);
} else {
acc[index] = cur;
}
return acc;
}, []);
console.log(result);
// 输出:[ { name: 'apple', price: 3 }, { name: 'orange', price: 5 }, { name: 'banana', price: 4 } ]
```
在上面的代码中,reduce 方法的初始值为一个空数组 [],然后遍历原数组 arr 中的每个元素 cur。对于每个元素 cur,使用 findIndex 方法查找新数组 acc 中是否已经存在一个与 cur 对象具有相同 name 属性值的元素。如果存在,则将 cur 对象替换掉 acc 中找到的元素;如果不存在,则将 cur 对象添加到 acc 数组中。
最终得到的 result 数组即为按照 name 属性值去重后的结果。
阅读全文