Skip to content

第 26 期(ECMAScript-原型链 继承):实现 Array reduce #29

@wingmeng

Description

@wingmeng

题目:

请编写一个方法 reduceArr,实现与 ES5 规范中数组的 reduce 方法同样的功能

相关: 第 22 期(ECMAScript-原型链 继承):实现 Array map

测试用例:

var data = [1, 2, 3, 4];

var result1 = data.reduceArr(function(total, cur, idx, arr) {
  return total + cur;
});

var result2 = data.reduceArr(function(total, cur, idx, arr) {
  return total + cur;
}, 100);

console.log(result1);  // 10
console.log(result2);  // 110

参考答案:

Array.prototype.reduceArr = function(fn, initialVal) {
  var arr = this;
  var result = arr[0];
  var startIdx = 1;
  
  if (typeof initialVal !== 'undefined') {
    result = initialVal;
    startIdx = 0;
  }

  for (var i = startIdx; i < arr.length; i++) {
    result = fn(result, arr[i], i, arr);
  }

  return result;
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions