reduce原理

let arr = [10, 20, 30];

Array.prototype.myreduce = function (fn, initVal) {
  for (let i = 0; i <= this.length - 1; i++) {
    initVal = fn(initVal, this[i], i, this);
  }
  return initVal;
};

let r1 = arr.myreduce(function (p, n) {
  return p + n;
}, 0);
console.log(r1);

reduceRight原理

Array.prototype.myreduceRight = function (fn, initVal) {
  if (!initVal) initVal = 0;
  for (let i = this.length - 1; i >= 0; i--) {
    initVal = fn(initVal, this[i], i, this);
  }
  return initVal;
};

let r2 = arr.myreduceRight(function (p, n) {
  return p + n;
}, 0);

console.log(r2);

带你入门前端
38 声望2 粉丝

通俗易懂,言简意赅授课