使用“ reduce”将数字数组相乘时的未定义输出

时间:2019-10-24 14:09:48

标签: javascript reduce

当将一个数字数组相乘时,我得到预期的输出:

 const numbers = [2, 5, 3];
 return numbers.reduce((a, b) => a * b);

但是,当我最初编写我的reduce语句时(如下所示),我得到了输出“ undefined”。我认为这与我为reduce设置种子的值0有关。

return numbers.reduce((a, b) => {
      a * b;
    }, 0);

我不完全了解“未定义”成为输出的情况。如果有人能启发我,我将不胜感激。

2 个答案:

答案 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);