去重的几种方法(部分)

去重方法千千万,下面展示三种

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的

其实大差不差就这些了,完结 撒花

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值