试图了解如何使用_.reduce

Trying to understand how to use _.reduce

本文关键字:reduce 何使用 了解      更新时间:2024-02-16

我正在努力解决这个问题:使用_.reduce将数组中的所有值相乘。

以下是我的想法:

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

这很近吗?我觉得我没有完全掌握reduce()。请帮忙。

您应该从对_.reduce的调用中省略最后一个0参数,或者将其替换为1,这取决于您在提供空数组时想要实现的语义。

与其在回调中考虑变量xy,不如将它们视为accumulatorcurrent。在第一次传递中,"初始值"参数作为accumulator传递,在随后的每次传递中,上一次传递的结果作为accumulator提供。

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

幸运的是,reduce的规范规定,如果省略该初始值参数,则所提供数组的第一个元素将处于accumulator的初始值中,然后仅从第二个元素开始迭代。

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