Array.prototype.reduce = function (fn,init) {
let total=init||this[0]
let start=init?0:1
for (let i = start; i < this.length; i++) {
total=fn(total,this[i], i, this)
}
return total
};
这个total计算过程用的是什么思想,递归还是迭代还是啥
它什么怎么把total计算完成的
代入例子就很清晰了
//例如fn是 (a,c)=>a+c
// [1,2,3].reduce((a,c)=>a+c) output 6
Array.prototype.reduce = function (fn,init) {
let total=init||this[0]
let start=init?0:1
for (let i = start; i < this.length; i++) {
//这里就是循环执行fn,次数就是数组[1,2,3]长度。并无递归,递归复杂度太高
total=fn(total,this[i], i, this)
}
return total
};
###明显 迭代