es6 数组某个属性过滤去重
时间: 2023-06-21 18:23:34 浏览: 137
JavaScript学习笔记之数组去重
可以使用ES6中的Set和Array.from()方法,结合使用filter和map方法来实现数组某个属性过滤去重的功能。具体步骤如下:
1. 使用filter方法过滤出符合条件的数据。
2. 使用map方法将符合条件的数据转换成一个新的对象,对象的键为需要去重的属性,值为这个对象。
3. 将这个新对象转换成一个数组。
4. 使用Set去重。
5. 使用Array.from()方法将Set转换成数组。
以下是示例代码:
```javascript
const arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Alice' },
{ id: 4, name: 'Charlie' },
{ id: 5, name: 'Bob' }
];
const uniqueArr = Array.from(new Set(
arr.filter((item, index) =>
arr.findIndex(obj => obj.name === item.name) === index
).map(item => ({ [item.name]: item }))
));
console.log(uniqueArr);
```
输出结果为:
```
[
{ Alice: { id: 1, name: 'Alice' } },
{ Bob: { id: 2, name: 'Bob' } },
{ Charlie: { id: 4, name: 'Charlie' } }
]
```
在这个示例中,我们以name属性作为去重的依据,最终返回了一个只包含不同name属性的对象的数组。
阅读全文