Lodash Reduce

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

_.reduce([1, 2], function(sum, n) {
  return sum + n;
}, 0);
// => 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)
deadman