reduce source npm

_.reduce(collection, [iteratee=_.identity], [accumulator])

Reduces collection to a value which is the accumulated result of running each element in collection through iteratee, where each successive invocation is supplied the return value of the previous. If accumulator is not provided the first element of collection is used as the initial value. The iteratee is invoked with four arguments:
(accumulator, value, index|key, collection).

Many lodash methods are guarded to work as iteratees for methods like _.reduce, _.reduceRight, and _.transform.

The guarded methods are:
assign, defaults, defaultsDeep, includes, merge, sortBy, and sortByOrder

Arguments

  1. collection (Array|Object)

    The collection to iterate over.

  2. [iteratee=_.identity] (Function)

    The function invoked per iteration.

  3. [accumulator] (*)

    The initial value.

Returns (*)

Returns the accumulated value.

Example

_.reduce([1, 2], function(sum, n) {
  return sum + n;
});
// => 3

_.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
  (result[value] || (result[value] = [])).push(key);
  return result;
}, {});
// => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)