js 数组去重之高阶方法-.reduce
1.业务需求:
- vue项目需要对数组(子项是对象)进行去重。
2.解决方案:
-
使用.reduce方法对复杂结构的数组(子项为对象)进行去重:
-
// 去重函数(list:数组) dropReduce(list) { // 定义一个空对象,利用对象的键的唯一进行去重 let obj = {} // 去重(cur:init默认list,next:数组子项,index:表示当前正在处理的数组元素的索引,arr:表示原数组) return list.reduce((cur,next,index,arr) => { obj[next.sysResourcesId]?"":obj[next.sysResourcesId]=true && cur.push(next) return cur }, []) },
-
使用.reduce方法对简单结构的数组(子项为数字)进行去重:
-
let arr = [1,2,3,4,5,1,2,1]; // indexOf()判断数组第一次出现的下标 var newArr = arr.reduce((cur, next)=> { cur.indexOf(next) === -1 && cur.push(next); return cur; },[]);