大家都知道,在进行数组去重时es6提供了new Set方法实现快速去重, 但是当我们需要根据数组内对象某个属性去重时,这个函数已经不能满足我们的业务需求。接下来我讲解一下如何根据对象属性进行快速去重。
const arr = [{num: 1}, {num: 3}, {num: 4}, {num: 1}, {num: 4}];
// 创建一个map函数实例 Map构造函数原理是用一个object {} key名用来存储传递进去的数据
const map = new Map();
//主要用到Map内置函数 has: 是否存在某个属性 set: 设置属性
const res = arr.filter(item => {!map.has(item.num) && map.set(item.num, "value")})
console.log(res)
//结果为[{num: 1}, {num: 3}, {num: 4}]
// 逻辑过程为 创建一个新的map实例 对数组进行过滤 回调函数中判断如果map中没有当前属性 则设置属性, 否则不符合过滤条件, 这样过滤出来的数据就只有没有重复的数据啦