6

我刚刚开始更深入地探索 JavaScript Underscore 库,只是想澄清一下我认为_.reduce()(也称为injectand foldl)所做的事情是正确的。我的问题是:下面是对的吗?

_.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

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

谢谢。

问候。

4

1 回答 1

10

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

回调的第二个参数是数组当前迭代的值。

因此,第一个参数是您想要达到的任何结果的累加器。_.reduce当所有迭代完成时,函数会返回最终值。

于 2013-02-20T16:13:29.500 回答