js里数组怎么去重对象列表
时间: 2023-06-29 22:19:39 浏览: 72
在 JavaScript 中,去重对象列表可以使用以下方法:
1. 使用 Set 对象:将对象列表中的每个对象的 JSON 字符串形式作为 Set 对象的元素进行去重,最后再将 Set 对象转换回对象数组。
```javascript
const arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' },
{ id: 3, name: 'Charlie' },
{ id: 2, name: 'Bob' }
];
const uniqueArr = [...new Set(arr.map(item => JSON.stringify(item)))].map(item => JSON.parse(item));
console.log(uniqueArr); // [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' }]
```
2. 使用 filter 方法:遍历对象列表,使用一个 Map 对象存储已经出现过的对象的 id 属性,然后筛选出只出现一次的对象。
```javascript
const arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' },
{ id: 3, name: 'Charlie' },
{ id: 2, name: 'Bob' }
];
const map = new Map();
const uniqueArr = arr.filter(item => {
return !map.has(item.id) && map.set(item.id, 1);
});
console.log(uniqueArr); // [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' }]
```
3. 使用 reduce 方法:遍历对象列表,使用一个 Map 对象存储已经出现过的对象的 id 属性,然后将只出现一次的对象存入新数组。
```javascript
const arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' },
{ id: 3, name: 'Charlie' },
{ id: 2, name: 'Bob' }
];
const map = new Map();
const uniqueArr = arr.reduce((prev, curr) => {
if (!map.has(curr.id)) {
map.set(curr.id, 1);
prev.push(curr);
}
return prev;
}, []);
console.log(uniqueArr); // [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' }]
```
以上三种方法都可以实现对象列表去重,具体使用哪种方法取决于个人喜好和性能考虑。
阅读全文