javascript - 使用“reduce”乘以数字数组时未定义的输出
问题描述
当像这样乘以一个数字数组时,我得到了预期的输出:
const numbers = [2, 5, 3];
return numbers.reduce((a, b) => a * b);
但是,当我最初编写 reduce 语句时(如下所示),我得到了输出“未定义”。我认为这与我在减少种子时使用的值 0 有关。
return numbers.reduce((a, b) => {
a * b;
}, 0);
我不完全理解“未定义”作为输出发生了什么。如果有人能就此启发我,我将不胜感激。
解决方案
在第二种形式中,您在箭头函数中使用花括号{}
,它没有隐式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);
推荐阅读
- python - dict到pandas pandas DataFrame的dict列表
- javascript - 为什么fromdata传递给req.body如果是文件但是当它是使用react / express-fileupload的blob时传递给req.files
- android - 我对 android 上的接近传感器有疑问
- elixir - 未定义的函数生成函数
- php - 即使服务器上存在足够的文件大小,为什么我在文件上传时收到 413 错误?
- python - pandas 传递错误的项目数 6,位置暗示 1
- javascript - 如何将此 jquery 函数从 onclick 更改为悬停?
- r - 为每个名称创建一个循环,使数据框中的可用年份完全相同,并使用 R 在数据框中报告结果
- swift - 使用泛型访问结构内的枚举类型
- javascript - 为什么 let 在 React 中失去它的价值?