去重方法千千万,下面展示三种
1.最简单最普通
const obj = {};
const list = []; //放去重后的数组
const arr = [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 2 }, { id: 1 }];
arr.forEach((item)=>{
if(obj[itemm.id]){
}else{
list.push(item);
obj[item.id] = item.id; //obj[item.id] = true也可以,只要这个id有值,下一个id进来就可以找到
}
})
console.log(list);
console.log(obj);
遍历arr,第一次,obj.1不存在,走else,list中push进去第一个元素,obj.1=1
第二次,obj.2不存在,走else,list中push进去第二个元素,obj.2=2;
第三次,obj.3不存在,走else,list中push进去第三个元素,obj.3=3;
第四次,obj.2存在,走if;
第三次,obj.1存在,走if;
输出结果
总结:目标数组的value值,作为obj对象的key,key不同,代表没有重复的,push,相同,跳过
2.reduce
const peon = selectEnumData.reduce((cur, next) => {
obj[next.id] ? '' : (obj[next.id] = true && cur.push(next));
return cur;
}, []);
cur第一次为空,相当于上边的list=[],也就是初始给一个空数组;
第一次,next就相当于是数组的第一项,也就是{id:1},obj.1不存在,走(obj[next.id] = true && cur.push(next),
(obj[next.id] = true && cur.push(next) :
next放到一个新数组里, cur.push(next)返回数组长度
true&& 1 =true 所以obj[next.id]=true
........接下来就和上面一样了......这种写法更加简洁高级。
3.set方法
set自带去重方法
const arr = ['张三','张三','三张三']
let set = new Set(arr); // set 自带去重
// Set { '张三', '三张三' }
console.log(set);
console.error(Array.from(set));
注意:像那种数组对象是不可以用set的
其实大差不差就这些了,完结 撒花