js对象数组去重set方法
时间: 2023-11-03 19:59:50 浏览: 172
在 JavaScript 中,你可以使用 Set 对象来去重一个对象数组。Set 对象是一种集合数据结构,它只允许存储唯一的值。
下面是使用 Set 对象去重一个对象数组的方法:
```javascript
const arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' } // 重复的对象
];
const uniqueArr = [...new Set(arr.map(JSON.stringify))].map(JSON.parse);
console.log(uniqueArr);
```
在这个示例中,我们先使用 `map` 方法将每个对象转换成字符串形式(使用 `JSON.stringify`),然后将这些字符串放入 Set 对象中,利用 Set 对象自动去除重复项的特性。最后,我们再将每个字符串转换回对象形式(使用 `JSON.parse`),得到去重后的对象数组。
注意,这种方法会导致对象的顺序被重置,因为 Set 对象不维护元素的插入顺序。如果你需要保留原始顺序,可以使用 ES6 的 `Map` 数据结构来实现:
```javascript
const arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' } // 重复的对象
];
const uniqueArr = Array.from(new Map(arr.map(obj => [JSON.stringify(obj), obj])).values());
console.log(uniqueArr);
```
这里我们使用 `Array.from` 方法将 Map 对象的值转换为数组,以保留原始顺序。
阅读全文