lodash.reduce
lodash文档解释:通过 iteratee 遍历集合中的每个元素。 每次返回的值会作为下一次 iteratee 使用。 如果没有提供 accumulator,则集合中的第一个元素作为 accumulator。 iteratee 会传入4个参数:(accumulator, value, index|key, collection)。
当看到官方文档解释的时候有点懵,接下来我们通过源代码逐一分析。
lodash.reduce相关的源代码:
/***** lodash.reduce *****/
import arrayReduce from './.internal/arrayReduce.js'
import baseEach from './.internal/baseEach.js'
import baseReduce from './.internal/baseReduce.js'
function reduce(collection, iteratee, accumulator) {//此处可见reduce支持3个参数(collection-可遍历对象,iteratee-处理函数,accumulator-初始值)
const func = Array.isArray(collection) ? arrayReduce : baseReduce //可遍历对象是否是数组,如果是则调用arrayReduce,否则调用baseReduce
const initAccum = arguments.length < 3//判断是否传入accumulator,如果未传入则使用可遍历对象的第一个值作为初始值
return func(collection, iteratee, accumulator, initAccum, baseEach)
}
export default red