JavaScript实现getSpeedStatistic函数时平均值计算错误求助
问题排查:getSpeedStatistic函数平均值计算错误
错误原因
你在循环内部重复计算平均值并累加,完全违背了平均值的计算逻辑。平均值的正确计算方式是总和除以数组长度,只需要计算一次,但你现在每次循环都把当前累加的sum除以长度,再把结果累加到average变量里,导致最终结果是多次中间值的总和,自然和预期不符。
比如第一个测试用例[5, 0, 8, 1]:
- 循环过程中sum依次为5、5、13、14
- 每次的
sum/4取整后是1、1、3、4,累加后得到9,这就是你看到错误结果的原因
修正后的代码
function getSpeedStatistic(testResults) { // 处理空数组边界情况(可选,根据需求调整) if (testResults.length === 0) { return [0, 0, 0]; } let min = testResults[0]; let max = testResults[0]; let sum = 0; for(const number of testResults){ if(number > max){ max = number; } if(number < min){ min = number; } sum += number; } // 循环结束后计算一次向下取整的平均值 const average = Math.floor(sum / testResults.length); return [min, max, average]; };
验证测试用例
- 输入
[5, 0, 8, 1]:sum=14,14/4=3.5,向下取整得3,返回[0, 8, 3],符合预期 - 输入
[1, 2, 2, 3, 3, 3, 3, 18]:sum=35,35/8=4.375,向下取整得4,返回[1, 18, 4],符合预期 - 输入
[4.5, 6.7, 9.2, 1]:sum=21.4,21.4/4=5.35,向下取整得5,返回[1, 9.2, 5],符合预期
内容的提问来源于stack exchange,提问作者AlexNoob
相关产品推荐
相关产品推荐

