reduce.js 456 B

1234567891011121314151617181920212223
  1. 'use strict';
  2. module.exports = function reduce(fn, carry) {
  3. var _this = this;
  4. var reduceCarry = null;
  5. if (carry !== undefined) {
  6. reduceCarry = carry;
  7. }
  8. if (Array.isArray(this.items)) {
  9. this.items.forEach(function (item) {
  10. reduceCarry = fn(reduceCarry, item);
  11. });
  12. } else {
  13. Object.keys(this.items).forEach(function (key) {
  14. reduceCarry = fn(reduceCarry, _this.items[key], key);
  15. });
  16. }
  17. return reduceCarry;
  18. };