Array.prototype.myReduce = function (fn, initalValue) {
//将类数组转化为数组
var arr = Array.prototype.slice.call(this);
// 设置结果值,初始值,
var res, startIndex;
//最终结果初始值,如果有initialValue,就设置,没有就取数组的数组第一个值
res = initialValue ? initialValue : arr[0];
//初始值如果initalValue存在就为0,不存在就从1开始
startIndex = initalValue ? 0 : 1;
//如果有初始值,就从0开始遍历
for (var i = startIndex; i < arr.length; i++) {
res.fn.call(null, res, arr[i], i, this)
}
return res;
}
var arr = [1, 2, 3, 4];
var newArr = arr.reduce((pre, cur) => {
return pre + cur
}, 5);
console.log(newArr);