bbo
Version:
bbo is a utility library of zero dependencies for javascript.
26 lines (19 loc) • 612 B
JavaScript
;
/* eslint-disable no-param-reassign */
/* eslint-disable max-params */
function reduce(obj, predicate
/* , initialValue */
) {
var args = [callback];
var hasInitialValue = (2 in arguments);
hasInitialValue && args.push(arguments[2]);
function callback(previousValue, currentKey, currentIndex, array) {
if (!hasInitialValue) {
previousValue = obj[array[0]];
hasInitialValue = true;
}
return predicate(previousValue, currentKey, obj[currentKey], currentIndex, array);
}
return Array.prototype.reduce.apply(Object.keys(obj), args);
}
module.exports = reduce;