js对数组包裹对象,根据每个对象的id对数组进行去重,如何实现
时间: 2023-07-18 16:19:11 浏览: 130
可以使用数组的 reduce 方法来实现该功能。具体步骤如下:
1. 定义一个空对象,用于存储已经存在的 id 值;
2. 使用 reduce 方法对原数组进行遍历,遍历每个对象;
3. 判断当前对象的 id 值是否已经存在于定义的对象中;
4. 如果不存在,则将该对象添加到结果数组中,并将该对象的 id 值添加到定义的对象中;
5. 如果存在,则不将该对象添加到结果数组中。
代码示例:
```javascript
const arr = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 1, name: 'Charlie'}, {id: 3, name: 'David'}, {id: 2, name: 'Eve'}];
const result = arr.reduce((acc, cur) => {
if (!acc.obj[cur.id]) {
acc.obj[cur.id] = true;
acc.arr.push(cur);
}
return acc;
}, { obj: {}, arr: [] }).arr;
console.log(result); // [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 3, name: 'David'}]
```
在这个示例中,`acc` 是一个对象,包含两个属性:`obj` 和 `arr`,分别用于存储已经存在的 id 和结果数组。在遍历原数组的过程中,如果当前对象的 id 不存在于 `obj` 中,则将该对象添加到 `arr` 中,并将该 id 添加到 `obj` 中;否则,不将该对象添加到结果数组中。最后,返回 `arr` 属性即为去重后的结果数组。
阅读全文