reduce

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

通过 iteratee 遍历集合中的每个元素。 每次返回的值会作为下一次 iteratee 使用。 如果没有提供 accumulator,则集合中的第一个元素作为 accumulator。 iteratee 会传入4个参数:(accumulator, value, index|key, collection)。

有许多 lodash 的方法以 iteratees 的身份守护其工作,例如: _.reduce, _.reduceRight, 以及 _.transform.

被守护的有: assign, defaults, defaultsDeep, includes, merge, orderBy, 以及 sortBy

参数

  1. collection (Array|Object)

    需要遍历的集合

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

    这个函数会处理每一个元素

  3. [accumulator] (*)

    初始化的值

返回值 (*)

返回累加后的值

示例

_.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'] } (无法保证遍历的顺序)