求数组平均值的函数返回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
相关产品推荐
相关产品推荐

