You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用reduce乘法归约数组得0异常,求数组转单值的其他方法

数组元素相乘归约为单个数字的问题解决方法

你的代码输出0是因为reduce的初始值设为了0——乘法运算中0和任何数相乘结果都是0,整个归约过程从一开始就被置0,自然得不到正确的乘积。

修正后的reduce写法

把初始值改为1(乘法的单位元)即可得到正确结果:

let numbs = [1, 2, 3, 4, 5, 6, 7, 8];
let reducedNumb = numbs.reduce((prevVal, currVal) => prevVal * currVal, 1);
console.log(reducedNumb); // 输出40320

其他实现方法

  • for循环遍历计算
    手动遍历数组,逐个累积乘积:
let numbs = [1, 2, 3, 4, 5, 6, 7, 8];
let result = 1;
for (let i = 0; i < numbs.length; i++) {
  result *= numbs[i];
}
console.log(result); // 输出40320
  • forEach遍历
    通过forEach循环完成乘积累积:
let numbs = [1, 2, 3, 4, 5, 6, 7, 8];
let result = 1;
numbs.forEach(num => {
  result *= num;
});
console.log(result); // 输出40320
  • eval拼接表达式(谨慎使用)
    将数组元素拼接成乘法表达式后用eval执行,注意:若数组含非数字元素会报错,且eval存在安全风险,仅在确定数组内容安全时使用:
let numbs = [1, 2, 3, 4, 5, 6, 7, 8];
let result = eval(numbs.join('*'));
console.log(result); // 输出40320

内容的提问来源于stack exchange,提问作者user21738272

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 05:09:57