美文网首页
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