UNPKG

bbo

Version:

bbo is a utility library of zero dependencies for javascript.

26 lines (19 loc) 612 B
'use strict'; /* 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;