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

求数组平均值的函数返回8.75错误结果,请问问题出在哪里?

问题诊断与修复方案

嘿,我一眼就发现你代码里的问题啦!咱们来一步步拆解:

错误根源

你把var total = 0;放在了for循环的内部,这就导致每次循环迭代的时候,total都会被重新重置为0。到最后一次循环时,它只累加了数组的最后一个元素35,35除以数组长度4,结果自然就是8.75了。

修复后的代码

把total的声明和初始化移到循环外面,让它能持续累加所有元素:

function average(arr) {
  var total = 0; // 移到循环外面!
  for (i = 0; i < arr.length; i++) {
    total += arr[i];
  }
  return total / arr.length;
}
console.log(average([74, 55, 6, 35])); // 现在会输出(74+55+6+35)/4 = 42.5

额外优化建议

如果你想让代码更简洁且不易出错,可以用数组的reduce方法来计算总和:

function average(arr) {
  // 用reduce累加,初始值设为0
  const total = arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
  return total / arr.length;
}

另外,推荐用let或const代替var,避免变量提升带来的潜在问题哦~

内容的提问来源于stack exchange,提问作者Gavin de jong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 08:07:33