| 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; |