2021-02-11 21:31:41 +08:00

29 lines
671 B
JavaScript

'use strict';
var objectKeys = require('object-keys');
module.exports = function reduce(list, iterator) {
var keys = objectKeys(list);
var i = 0;
var accumulator = list[0];
var context = this;
if (arguments.length === 2) {
i = 1;
} else if (arguments.length === 3) {
accumulator = arguments[2];
} else if (arguments.length >= 4) {
context = arguments[2];
accumulator = arguments[3];
}
for (var len = keys.length; i < len; i++) {
var key = keys[i];
var value = list[key];
accumulator = iterator.call(context, accumulator, value, key, list);
}
return accumulator;
};