09_Array.reduce
本题考点:Array.reduce
根据题目要求,实现一个仿Array.reduce功能的"Array._reduce"函数,并且需要将”_reduce“函数挂载在Array的原型对象上。根据Array.reduce的特点有:
- 接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值
- 可以接收一个初始值,当没有初始值时,默认初始值为数组中的第一项
实现该函数的核心步骤有:
- 在Array的原型对象上添加”_reduce“函数
- ”_reduce“函数第一个参数为回调函数,第二个参数为初始值
- 进入数组长度的循环体中
- 当初始值为空时,首个被加数为数组的第一项
- 当初始值不为空时,首个被加数为初始值
参考答案:
Array.prototype._reduce = function(fn, prev) {
for(let i=0 ; i<this.length ; i++) {
if(prev === undefined) {
prev = fn(this[i], this[i+1], i+1, this)
++i
} else {
prev = fn(prev, this[i], i, this)
}
}
return prev
}