Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试图理解如何使用u0.reduce_Javascript_Underscore.js_Reduce - Fatal编程技术网

Javascript 试图理解如何使用u0.reduce

Javascript 试图理解如何使用u0.reduce,javascript,underscore.js,reduce,Javascript,Underscore.js,Reduce,我试图解决这个问题: 使用u.reduce将数组中的所有值相乘 以下是我的想法: var product = _.reduce([1, 2, 3], function(x, y){ return x * y; }, 0); = 9 离这儿近吗?我觉得我没有吃饱。请帮忙 您应该在调用.reduce时忽略最后一个0参数,或者将其替换为1,这取决于如果要提供空数组,您希望实现的语义 而不是在回调中考虑变量 x>代码>和 y>代码>,将它们视为累加器< /代码>和当前< /代码>。在第一次传递中,“初

我试图解决这个问题: 使用u.reduce将数组中的所有值相乘

以下是我的想法:

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

离这儿近吗?我觉得我没有吃饱。请帮忙

您应该在调用
.reduce
时忽略最后一个
0
参数,或者将其替换为
1
,这取决于如果要提供空数组,您希望实现的语义

<>而不是在回调中考虑变量<代码> x>代码>和<代码> y>代码>,将它们视为<代码>累加器< /代码>和<代码>当前< /代码>。在第一次传递中,“初始值”参数作为
累加器传递
,在随后的每次传递中,上一次传递的结果作为
累加器提供

您错误提供的
0
将作为
累加器的第一个值传递,因此每个后续乘法也会导致
0

幸运的是,
reduce
的规范指出,如果省略该初始值参数,那么它将使提供的数组的第一个元素位于
累加器的初始值中,然后仅从第二个元素开始迭代


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

第三个参数是起始值。在这种情况下,您想使用
1
@Phylogenesis,实际上他应该完全忽略最后的“初始值”参数,
reduce
的定义是,如果没有初始值,它将第一个数组值作为“初始值”,然后从第二个值迭代onwards@Alnitak很公平。但是,代码不起作用的原因是第三个参数设置为
0
,它实际上返回
0*1*2*3
。我假设
=9
是一个打字错误,您实际上是指
=0
?@Phylogenesis这是根本原因,但将值设置为
1
不是正确的修复方法,因为说空集的乘积是1在数学上是不正确的。任何空集的乘积都是未定义的。