首页 > 解决方案 > 使用“reduce”乘以数字数组时未定义的输出

问题描述

当像这样乘以一个数字数组时,我得到了预期的输出:

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

但是,当我最初编写 reduce 语句时(如下所示),我得到了输出“未定义”。我认为这与我在减少种子时使用的值 0 有关。

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

我不完全理解“未定义”作为输出发生了什么。如果有人能就此启发我,我将不胜感激。

标签: javascriptreduce

解决方案


在第二种形式中,您在箭头函数中使用花括号{},它没有隐式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);


推荐阅读