JS 数组中对象去重 reduce 用法

您所在的位置:网站首页 foreach去重 JS 数组中对象去重 reduce 用法

JS 数组中对象去重 reduce 用法

#JS 数组中对象去重 reduce 用法| 来源: 网络整理| 查看: 265

[3,2,6].reduce.((aa, bb) => {return aa+bb}, []) // 注意传了2个参数,第一个为回调,第二个为初始值 aa

单纯数组去重:let arr = new Set([1,1,3,3,'bb','bb','cc']) [...arr] // 打印出 1, 3, "bb", "cc"

对于数组对象,传统的去重方法无能为力,至于forEach()、filter()等迭代方法也不好使;真正能做到优雅去重的,是ES5新增加的一个方法——reduce()

高手给的,完美方法

let log = console.log.bind(console); let person = [ {id: 0, name: "小明"}, {id: 1, name: "小张"}, {id: 2, name: "小李"}, {id: 3, name: "小孙"}, {id: 1, name: "小周"}, {id: 2, name: "小陈"}, ]; let obj = {}; person = person.reduce((cur,next) => { obj[next.id] ? "" : obj[next.id] = true && cur.push(next); return cur; },[]) //设置cur默认类型为数组,并且初始值为空的数组 log(person);

高手总结:https://www.cnblogs.com/caideyipi/p/7679681.html

 

使用时发现开 eslint 时,上面的表达式会报错,换成以下条件即可:

let obj = {}; person = person.reduce((cur,next) => { if (!obj[next.id]) { obj[next.id] = true if (!obj[next.id]) { cur.push(next) } } // 不会报错,也比较好懂了 (当对象里没有所传属性时,给属性true并PUSH数组) return cur; },[])

 

 

 

.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3