如何用for循环计算数组平均值,修复JS代码console.log无输出问题
可以通过for循环遍历数组计算平均值,你的代码无法输出是语法错误导致的。
问题原因
最后一行console.log没有输出是因为calcAverage函数内部的for循环触发了死循环:
- 原
for循环的终止条件写为arr.length,只要数组长度不为0,这个判断就永远为真,循环会无限执行,自然不会走到后续的console.log步骤。 - 代码还存在两处冗余/隐患:
- 计算小费的循环里
calcTip(tipsTotal.push(value))是多余代码,push方法返回的是数组新长度,你并没有用到这行代码的返回值,完全可以删除。 - 求和变量
sum定义在全局作用域,多次调用calcAverage时会出现累加错误,建议移到函数内部。
- 计算小费的循环里
修复后代码
const bills = [22, 295, 176, 440, 37, 105, 10, 1100, 86, 52] const tipsTotal = []; const calcTip = function(bill) { return bill >= 50 && bill <= 300 ? bill * .15 : bill * .20; } // 移除冗余的calcTip调用 for (let i = 0; i < bills.length; i++) { const value = calcTip(bills[i]); tipsTotal.push(value); } console.log(tipsTotal); const calcAverage = function(arr) { // sum移到函数内部,避免全局污染和重复调用累加问题 let sum = 0; // 补充正确的循环终止条件:i < arr.length for (let i = 0; i < arr.length; i++) { sum += arr[i]; } return sum / arr.length; } console.log(calcAverage(bills));
运行结果
- 小费数组输出:
[4.4, 44.25, 26.4, 88, 7.4, 15.75, 2, 220, 12.9, 7.8] - 账单平均值输出:
232.1
内容的提问来源于stack exchange,提问作者Matt Beagle
相关产品推荐
相关产品推荐

