underscorejs的reduce
如何工作?
使用 _.reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0);
很简单(结果为6
)。
但是其他可选参数是如何工作的呢?在文档中写到:
Memo 是 reduction 的初始状态,每个成功的迭代应该由 iterator 返回。iterator 接收四个参数:memo、value、iteration 的 index(或 key),最后是整个 list 的引用。
但我不理解。我尝试将reduce
用于以下问题,但我无法理解:
var input = [{"score": 2, "name": "Jon", "venue": "A"}, {"score": 3, "name": "Jeff", "venue":"A"}, {"score": 4, "name": "Jon", "venue":"B"}, {"score": 4, "name": "Jeff", "venue":"B"}];
var output = [{"score": 6, "name":"Jon", "venue": ["A", "B"]}, {"score": 7, "name":"Jeff", "venue": ["A", "B"]}];
我该如何使用
_reduce
来输出输入?了解在reduce内部运作的方式会非常有帮助。
memo
只是初始值,在后续迭代中成为上一个返回值。其余参数与.map()
或.forEach()
等方法一样。 - user2437417