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

JavaScript计算数组平均值:空数组返回NaN而非0的问题排查

问题排查与修复

核心问题

你的代码里的条件判断犯了两个关键错误:

  • 误用**赋值运算符=**代替比较逻辑:if ((numbers = []))这行代码是把空数组赋值给numbers,而非判断输入数组是否为空;
  • 即便改成比较运算符,直接用numbers === []也不成立:数组是引用类型,两个空数组的内存地址不同,[] === []结果为false,导致空数组的判断永远不会触发。

当输入空数组时,代码会执行到total / numbers.length,此时numbers.length为0,0除以0会得到NaN,这就是问题根源。

修复后的代码

直接通过数组长度判断是否为空即可:

function calculateAverage(numbers) {
  if (numbers.length === 0) return 0;
  let total = 0;
  for (let num of numbers) {
    total += num;
  }
  let result = total / numbers.length;
  return result;
}

可选简洁写法

如果想简化总和计算,可以使用Array.reduce:

function calculateAverage(numbers) {
  if (numbers.length === 0) return 0;
  const total = numbers.reduce((sum, num) => sum + num, 0);
  return total / numbers.length;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:40:42