手写Reduce方法
- 重点1: 首先要知道reduce的参数是什么?
- reduce的第一个参数是回调函数, 第二个参数是初始值
- 回调函数是遍历数组每一项都要执行的函数
- 重点2: 第一个参数是函数, 那么这个函数的参数是什么?
- 有四个参数
- 第一个参数是, 上一次调用回调函数的结果
- 第二个参数是, 当前元素的值
- 第三个参数是, 当前元素在数组中的索引
- 第四个参数是, 调用reduce方法的数组本身
const arr = [9,2,3,4,5,6]
console.log(
'第一个' +
arr.reduce((acc, cur, index) => {
acc += cur + index
return acc
}, 2)
);
Array.prototype.myReduce = function (fn, initVal) {
const that = this
if(!that.length) return
let index = initVal ? 0 : 1
let acc = initVal ? initVal: that[0]
for(let i = index; i < that.length; i++) {
let cur = that[i]
acc = fn(acc, cur, i, that)
}
return acc
}
console.log(
'第二个' +
arr.myReduce((acc, cur, index) => {
acc += cur + index
return acc
}, 2)
);
