ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## 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'] } (无法保证遍历的顺序) ```