美文网首页
JS使用reduce方法数组去重原理解析

JS使用reduce方法数组去重原理解析

作者: 秘果_li | 来源:发表于2020-03-27 17:30 被阅读0次

    初始化数据结构如下:

    oldarr=[ {id:0001, name:'user1'}, {id:0003, name:'user2'}, {id:0002, name:'user1'}, {id:0003, name:'user2'} ]
    

    根据数组元素对象中name属性来为数组去重

        function arrRemoveRepet(oldarr) {
          let newArr = [];
          const obj = {};
          newArr = oldarr.reduce(function(prev, cur) {
            obj[cur.name] ? '' : (obj[cur.name] = true && prev.push(cur));
            return prev;
          }, []);
          return newArr;
        }
    //返回结果为  [ {id:0001, name:'user1'},  {id:0003, name:'user2'} ]
    

    obj 对象中存储的必须是键值对(这样容易判断对象里面有没有这个键),所以对象obj的键cur.name必须对应一个值,这个值逻辑判断必须为 true

    obj[cur.name] = 2 // 也是可以的
    

    如果不给 obj[cur.name] 赋 true 值,就变成了字符串和键值对的对比,结果永远是false
    引用一个通俗的解释
    https://zhidao.baidu.com/question/2117374649677753947.html

    试试赋值为 null 的结果


    相关文章

      网友评论

          本文标题:JS使用reduce方法数组去重原理解析

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