为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

喵喔喔 2021-12-02 16:20:04
当像这样乘以数字数组时,我得到了预期的输出: const numbers = [2, 5, 3]; return numbers.reduce((a, b) => a * b);但是,当我最初编写我的 reduce 语句(如下所示)时,我得到了“未定义”的输出。我认为这与我为 reduce 播种的值 0 有关。return numbers.reduce((a, b) => {      a * b;    }, 0);我不完全理解“未定义”作为输出发生了什么。如果有人能在这方面启发我,我将不胜感激。
查看完整描述

2 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

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


查看完整回答
反对 回复 2021-12-02
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

您应该将 0 更改为 1,因为任何数字乘以 0 都是 0:

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


查看完整回答
反对 回复 2021-12-02
  • 2 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信