本文为读 lodash 源码的第一百二十二篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
arrayReduce
的作用和数组的 reduce
的方法差不多。
源码如下:
function arrayReduce(array, iteratee, accumulator, initAccum) {
let index = -1
const length = array == null ? 0 : array.length
if (initAccum && length) {
accumulator = array[++index]
}
while (++index < length) {
accumulator = iteratee(accumulator, array[index], index, array)
}
return accumulator
}
iteratee
和 reduce
方法一样,接收上一次计算的值 accumulator
,当前值,当前 index
和传入的数组 array
。
accumulator
可以用来传入初始值。
initAccum
用来指定是否使用数组第一个值作为初始值。
let index = -1
const length = array == null ? 0 : array.length
if (initAccum && length) {
accumulator = array[++index]
}
如果 initAccum
为真值,并且数组不为空,则使用数组的第一个值作为初始值。
while (++index < length) {
accumulator = iteratee(accumulator, array[index], index, array)
}
接下来遍历数组,调用 iteratee
得到计算后的结果,保存在 accumulator
中。
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面