reduce
最后更新于:2022-04-02 00:00:15
## reduce
+ [link](./reduce "Link to this entry.")
+ [source](https://github.com/lodash/lodash/blob/4.5.0正式版/lodash.src.js#L8018 "View in source.")
+ [npm](https://www.npmjs.com/package/lodash.reduce "See the npm package.")
```
_.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'] } (无法保证遍历的顺序)
```
';