当将一个数字数组相乘时,我得到预期的输出:
const numbers = [2, 5, 3];
return numbers.reduce((a, b) => a * b);
但是,当我最初编写我的reduce语句时(如下所示),我得到了输出“ undefined”。我认为这与我为reduce设置种子的值0有关。
return numbers.reduce((a, b) => {
a * b;
}, 0);
我不完全了解“未定义”成为输出的情况。如果有人能启发我,我将不胜感激。
答案 0 :(得分:2)
在第二种形式中,您在箭头函数中使用大括号{}
,但没有隐式return
。如果使用花括号,则需要明确 return
:
const numbers = [2, 5, 3];
const test = numbers.reduce((a, b) => {
return a * b;
}, 0);
console.log(test);
编辑
正如各种注释中所指出的那样,这解决了结果为undefined
的问题,但仍将是0
,因为您将初始值设置为0
,并且0
乘以0
。您可以简单地忽略它(或用1
代替)以获取返回数组中所有项目的乘积:
const numbers = [2, 5, 3];
const test = numbers.reduce((a, b) => {
return a * b;
});
console.log(test);
答案 1 :(得分:1)
您应该将0更改为1,因为任何数字乘以0就是0:
return numbers.reduce((a, b) => a * b, 1);