下划线_.reduce澄清?

raf*_*raf 6 javascript underscore.js

我刚开始更深入地探索JavaScript Underscore库,只是想澄清我认为_.reduce()(也称为injectfoldl)的做法是对的.我的问题是:下面是对的吗?

_.reduce([1, 2, 3, 4, 5], function(memo, num) { return memo + num; }, 5);被调用时,会发生以下情况:

  • memo 开始于 5
  • memo+ list[0]= memo=6
  • memo+ list[1]= memo=8
  • memo+ list[2]= memo=11
  • memo+ list[3]= memo=15
  • memo+ list[4]= memo=20

这就是run函数返回的原因20.是对的吗?因此_.reduceRight()是相反的,从memo+ 开始list[ /* last element in array */ ]

谢谢.

问候.

the*_*tem 11

对,那是正确的.reduce回调的第一个参数表示从上一次迭代返回的值(或第一次迭代时的种子).

回调的第二个参数是Array当前迭代的值.

因此,第一个参数是您尝试达到的任何结果的累加器._.reduce所有迭代完成后,从函数返回最终值.