试图了解如何使用_.reduce

时间:2015-02-20 11:11:11

标签: javascript underscore.js reduce

我试图解决这个问题: 使用_.reduce乘以数组中的所有值。

这是我想出的:

var product = _.reduce([1, 2, 3], function(x, y){ return x * y; }, 0);
= 9

这是否接近?我不觉得我正在全力掌握reduce()。请帮忙。

1 个答案:

答案 0 :(得分:1)

您应该在调用0时忽略最终_.reduce参数,或者将其替换为1,具体取决于您要提供的空语义。阵列。

不要在回调中考虑变量xy,而应将其视为accumulatorcurrent。在第一次传递"初始值"参数作为accumulator传递,并且在每个后续传递中,前一个传递的结果将作为accumulator提供。

您错误提供的0作为accumulator的第一个值传递,因此每次后续乘法也会产生0

幸运的是,reduce的规范说如果省略该初始值参数,那么它将使所提供数组的第一个元素处于accumulator的初始值,然后仅从第二个元素。

如果您没有提供初始值,则数组必须中至少包含一个元素。