用ES5实现数组的reduce方法

# 用ES5实现数组的reduce方法

  • 初始值不传怎么处理
  • 回调函数的参数有哪些,返回值如何处理。
Array.prototype.myReduce = function(fn, initialValue) {
 var arr = Array.prototype.slice.call(this);
 var res, startIndex;
 res = initialValue ? initialValue : arr[0]; // 不传默认取数组第一项
 startIndex = initialValue ? 0 : 1;
 for (var i = startIndex; i < arr.length; i++) {
  // 把初始值、当前值、索引、当前数组返回去。调用的时候传到函数参数中 [1,2,3,4].reduce((initVal, curr, index, arr))
  res = fn.call(null, res, arr[i], i, this);
 }
 return res;
}
1
2
3
4
5
6
7
8
9
10
11
上次更新: 2022/7/2 上午7:51:43