mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-01-31 15:27:50 +00:00
25 lines
966 B
JavaScript
25 lines
966 B
JavaScript
define(['./baseCallback', './baseReduce', '../lang/isArray'], function(baseCallback, baseReduce, isArray) {
|
|
|
|
/** Used as a safe reference for `undefined` in pre-ES5 environments. */
|
|
var undefined;
|
|
|
|
/**
|
|
* Creates a function for `_.reduce` or `_.reduceRight`.
|
|
*
|
|
* @private
|
|
* @param {Function} arrayFunc The function to iterate over an array.
|
|
* @param {Function} eachFunc The function to iterate over a collection.
|
|
* @returns {Function} Returns the new each function.
|
|
*/
|
|
function createReduce(arrayFunc, eachFunc) {
|
|
return function(collection, iteratee, accumulator, thisArg) {
|
|
var initFromArray = arguments.length < 3;
|
|
return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
|
|
? arrayFunc(collection, iteratee, accumulator, initFromArray)
|
|
: baseReduce(collection, baseCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
|
|
};
|
|
}
|
|
|
|
return createReduce;
|
|
});
|