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

2020-03-27  本文已影响0人  秘果_li

初始化数据结构如下:

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 的结果


上一篇下一篇

猜你喜欢

热点阅读