23 lines
456 B
JavaScript
23 lines
456 B
JavaScript
|
'use strict';
|
||
|
|
||
|
module.exports = function reduce(fn, carry) {
|
||
|
var _this = this;
|
||
|
|
||
|
var reduceCarry = null;
|
||
|
|
||
|
if (carry !== undefined) {
|
||
|
reduceCarry = carry;
|
||
|
}
|
||
|
|
||
|
if (Array.isArray(this.items)) {
|
||
|
this.items.forEach(function (item) {
|
||
|
reduceCarry = fn(reduceCarry, item);
|
||
|
});
|
||
|
} else {
|
||
|
Object.keys(this.items).forEach(function (key) {
|
||
|
reduceCarry = fn(reduceCarry, _this.items[key], key);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
return reduceCarry;
|
||
|
};
|