本文为读 lodash 源码的第二百六十一篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
baseSum
用来计算一组数据的和,这是用来实现 sum
和 sumBy
的内部方法,需要传入迭代器 iteratee
来返回值用来计算。
源码如下:
function baseSum(array, iteratee) {
let result
for (const value of array) {
const current = iteratee(value)
if (current !== undefined) {
result = result === undefined ? current : (result + current)
}
}
return result
}
其实就是迭代数组,在迭代过程中,将当前值传给迭代器 iteratee
,迭代器会返回一个新值 current
。
如果返回的值不为 undefined
,则判断 result
,即总和是否为 undefined
,如果是 undefined
,表示为第一次相加,将 current
赋值给 result
即可。
否则将 result
和 current
相加,结果赋值给 result
,这样就达到了累加的效果,最后得出的就是所有数据的总和。
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面