一、reduce()的基本使用方式
语法:
reduce((初始值或者结束返回的值,当前值,索引, 当前元素所属的数组对象), 可选,当前元素所属的数组或者对象)
二、reduce实现map方法
Array.prototype.myMap= function(cb) {
return this.reduce((pre, cur,index,arr) => pre.concat(cb(cur, index)), [])
}
let arr1 = [1, 3,4,5].myMap((item, index) => item + '+'+ index)
console.log(arr1, 'arr1') //(4) ["1+0", "3+1", "4+2", "5+3"] "arr1"
三、reduce实现累加器
var arr = [1, 2, 3].reduce((pre,cur,index,arr) => pre + cur)
console.log(arr) //6
四、reduce数组去重
//
var arr = [1, 2, 3,2].reduce((pre,cur,index,arr) => pre.includes(cur)? pre:[...pre,cur],[])
console.log(arr) //[1,2,3]
五、reduce将二维数组转化为一维
//
var arr = [1, 2,[3,6], 3,2].reduce((pre,cur,index,arr) => pre.concat(cur),[])
console.log(arr) //[1,2,3]
六、reduce将多维数组转化为一维
//
let arr = [[0, 1], [2, 3], [4,[5,6,7]]]
function flatten(data) {
return data.reduce((pre,cur,index,arr) => pre.concat(Array.isArray(cur) ? flatten(cur) : cur),[])
}
console.log(flatten(arr)) //[0, 1, 2, 3, 4, 5, 6, 7]