Categories
interview

Js reduce() polyfill

Array.prototype.reduce = function(callback, initialValue) {
  let acc = initialValue;
  for (let index = 0; index < this.length; index++) {
    if (!index && acc === undefined) {
      acc = this[index];
    } else {
      acc = callback(acc, this[index], index, this);
    }
  }
  return acc;
};

const arr = [3, 4, 5, 0, -1];
console.log(arr.reduce((acc, curr) => acc + curr)); // 11

Demo