Array.prototype.my_reduce = function(callback, initialValue) {
if (!Array.isArray(this) || !this.length || typeof callback !== 'function') {
return [];
};
let hasInitialValue = initialValue !== undefined;
let value = hasInitialValue ? initialValue : this[0];
for (let index = hasInitialValue ? 0 : 1; index < this.length; index ++) {
const element = this[index];
value = callback(value, element, index, this);
}
return value;
}
let arr = [1, 1, 1, 1, 5]
let res = arr.my_reduce((pre, cur, i, arr) => {
console.log(pre, cur, i, arr)
return pre + cur
}, 1)
console.log(res);