You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
789 B
JavaScript
24 lines
789 B
JavaScript
6 years ago
|
var arrayAggregator = require('./_arrayAggregator'),
|
||
|
baseAggregator = require('./_baseAggregator'),
|
||
|
baseIteratee = require('./_baseIteratee'),
|
||
|
isArray = require('./isArray');
|
||
|
|
||
|
/**
|
||
|
* Creates a function like `_.groupBy`.
|
||
|
*
|
||
|
* @private
|
||
|
* @param {Function} setter The function to set accumulator values.
|
||
|
* @param {Function} [initializer] The accumulator object initializer.
|
||
|
* @returns {Function} Returns the new aggregator function.
|
||
|
*/
|
||
|
function createAggregator(setter, initializer) {
|
||
|
return function(collection, iteratee) {
|
||
|
var func = isArray(collection) ? arrayAggregator : baseAggregator,
|
||
|
accumulator = initializer ? initializer() : {};
|
||
|
|
||
|
return func(collection, setter, baseIteratee(iteratee, 2), accumulator);
|
||
|
};
|
||
|
}
|
||
|
|
||
|
module.exports = createAggregator;
|