我刚开始更深入地探索
JavaScript Underscore库,只是想澄清一下我认为
_.reduce()
(也称为inject和foldl)的做法是对的.我的问题是:下面是对的吗?
当_.reduce([1,2,3,4,5],function(memo,num){return memo num;},5);被调用,发生以下情况:
>备忘录从5开始
>备忘录列表[0] =备忘录= 6
>备忘录列表[1] =备忘录= 8
>备忘录列表[2] =备忘录= 11
>备忘录列表[3] =备忘录= 15
>备忘录清单[4] =备忘录= 20
这就是为什么run函数返回20.为什么呢?因此_.reduceRight()
是相反的,从备忘录列表[/ *数组* /]中的最后一个元素开始?
谢谢.
问候.
解决方法
对,那是正确的. reduce回调的第一个参数表示从上一次迭代(或第一次迭代中的种子)返回的值.
回调的第二个参数是Array当前迭代的值.
因此,第一个参数是您尝试达到的任何结果的累加器.所有迭代完成后,从_.reduce函数返回最终值.