我试图解决这个问题: 使用_.reduce乘以数组中的所有值。
这是我想出的:
var product = _.reduce([1, 2, 3], function(x, y){ return x * y; }, 0);
= 9
这是否接近?我不觉得我正在全力掌握reduce()。请帮忙。
答案 0 :(得分:1)
您应该在调用0
时忽略最终_.reduce
参数,或者将其替换为1
,具体取决于您要提供的空语义。阵列。
不要在回调中考虑变量x
和y
,而应将其视为accumulator
和current
。在第一次传递"初始值"参数作为accumulator
传递,并且在每个后续传递中,前一个传递的结果将作为accumulator
提供。
您错误提供的0
作为accumulator
的第一个值传递,因此每次后续乘法也会产生0
。
幸运的是,reduce
的规范说如果省略该初始值参数,那么它将使所提供数组的第一个元素处于accumulator
的初始值,然后仅从第二个元素。
如果您没有提供初始值,则数组必须中至少包含一个元素。