js数组里面的对象根据属性值去重
时间: 2023-10-10 08:04:43 浏览: 89
你可以使用`reduce()`方法和`Map`数据结构来根据属性值去重数组中的对象。具体实现可以参考以下代码:
```javascript
const arr = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Mary' },
{ id: 1, name: 'Bob' },
{ id: 3, name: 'Alice' },
{ id: 2, name: 'David' }
];
const uniqueArr = arr.reduce((acc, current) => {
const existing = acc.get(current.id);
if (!existing) {
acc.set(current.id, current);
} else if (Array.isArray(existing)) {
existing.push(current)
} else if (existing.id === current.id) {
acc.set(current.id, [existing, current]);
}
return acc;
}, new Map()).values();
console.log([...uniqueArr]); // [{id: 1, name: 'John'}, {id: 2, name: 'Mary'}, {id: 3, name: 'Alice'}]
```
这段代码会根据数组中每个对象的 `id` 属性值来去重,并且保留第一次出现的对象。如果有多个对象具有相同的 `id` 属性值,则会把它们放在一个数组中。
阅读全文