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

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


 const numbers = [2, 5, 3];

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

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


return numbers.reduce((a, b) => {

      a * b;

    }, 0);

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


喵喔喔
浏览 178回答 2
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);

叮当猫咪

您应该将 0 更改为 1,因为任何数字乘以 0 都是 0:return numbers.reduce((a, b) => a * b, 1);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript