Skip to content

Latest commit

 

History

History
40 lines (25 loc) · 1.6 KB

baseSum.md

File metadata and controls

40 lines (25 loc) · 1.6 KB

lodash源码分析之baseSum

本文为读 lodash 源码的第二百六十一篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash

gitbook也会同步仓库的更新,gitbook地址:pocket-lodash

源码分析

baseSum 用来计算一组数据的和,这是用来实现 sumsumBy 的内部方法,需要传入迭代器 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 即可。

否则将 resultcurrent 相加,结果赋值给 result ,这样就达到了累加的效果,最后得出的就是所有数据的总和。

License

署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)

最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:

作者:对角另一面