1234567891011121314151617181920212223242526272829 |
- var forOwn = require('./forOwn');
- var size = require('./size');
- /**
- * Object reduce
- */
- function reduce(obj, callback, memo, thisObj) {
- var initial = arguments.length > 2;
- if (!size(obj) && !initial) {
- throw new Error('reduce of empty object with no initial value');
- }
- forOwn(obj, function(value, key, list) {
- if (!initial) {
- memo = value;
- initial = true;
- }
- else {
- memo = callback.call(thisObj, memo, value, key, list);
- }
- });
- return memo;
- }
- module.exports = reduce;
|