美文网首页
js中给数组中对象去重

js中给数组中对象去重

作者: 爬行的虾米 | 来源:发表于2019-01-17 20:43 被阅读0次

    被问到如何给数组中对象去重,想到set答案肯定错误的,这个平时工作中用到的不多,查阅资料,找到给数组中对象去重的方法,利用对象属性名的唯一性,怪自己当时没想到。
    方法一

     let ary=[
         {id: 0, name: "小明"},
         {id: 1, name: "小张"},
         {id: 2, name: "小李"},
         {id: 3, name: "小孙"},
         {id: 1, name: "小周"},
         {id: 2, name: "小陈"},   
    ];
    var result = [];
    var obj = {};
    ary.forEach((ele,index)=>{
      if(!obj[ele.id]){
        result.push(ele);
        obj[ele.id]=true;
      }
    });
    //console.log(result)
    

    方法二:用数组的reduce()方法(累加器)
    redeuce()参数:回调函数,传递给函数初始值(可选)
    回调函数的参数:
    1:初始值, 或者计算结束后的返回值。
    2:当前元素
    3:当前元素的索引(可选)
    4:当前元素所属的数组对象(可选)

    let arys=[1,2,3];
    //curs第一次为初始值1,之后为上一次累加结果3,
    //next当前要累加得元素
    var a=arys.reduce((curs,next)=>{
       // console.log(next)
        //1+2
        //3+3
     return curs+next;
    });
    //console.log(a);//6
    

    利用redeuce()为数组中对象去重

      let ary=[
         {id: 0, name: "小明"},
         {id: 1, name: "小张"},
         {id: 2, name: "小李"},
         {id: 3, name: "小孙"},
         {id: 1, name: "小周"},
         {id: 2, name: "小陈"},   
    ];
    let obj = {};
    ary=ary.reduce((curs,next)=>{
       obj[next.id]?"":obj[next.id]=true&& curs.push(next);
       return curs;
    },[]);
    

    相关文章

      网友评论

          本文标题:js中给数组中对象去重

          本文链接:https://www.haomeiwen.com/subject/wzjwdqtx.html