reduce的介绍及用法
1、参数介绍
array.reduce((pre, cur, index, arr)=>{ ... }, init);
pre: 必需。初始值,或者计算结束后的返回值。
cur: 必需。当前元素。
index: 可选。当前元素的索引。
arr: 可选。当前元素所属的数组对象。
init: 可选。传递给函数的初始值,相当于 pre 的初始值。
reduce 里面有一定要 return,return 出去的值也要注意
2、基本数据类型去重
let arr2 = [9, 4, 3, 6, 9]; //基本类型去重 let set = arr2.reduce((pre, cur) => { !pre.includes(cur) && pre.push(cur) return pre }, []) console.log(set); //[9,4,3,6]
3、引用数据类型去重
let list = [ { subject: "数学", marks: 80 }, { subject: "语文", marks: 90 }, { subject: "英语", marks: 80 }, ] function arrSet(value,arr) { let obj = {} let res = arr.reduce((pre, cur) => { if (!obj[cur[value]]) { obj[cur[value]] = true pre.push(cur) } return pre }, []) return res } let result = arrSet("marks",list); console.log(result); //[{subject:"数学",marks:80},{subject:"语文":90}]
4、基本数据类型求和
let arr2 = [9, 4, 3, 6, 9]; let sum = arr2.reduce((pre, cur) => { return pre + cur },0) console.log(sum) //31
5、引用数据类型求和
let arr = [ { value: 45, }, { value: 88, }, { value: 101, }, ]; let newArr = arr.reduce((pre, cur) => { return pre + cur.value; }, 0); console.log(newArr); //234