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

使用for-of循环计算数组和与平均值的代码问题求助及优化咨询

问题分析与解决方案

首先咱们来拆解下你代码里的几个核心问题:

  • 你在for-of循环里用了let sum of elmt,这直接把之前用来存总和的sum变量覆盖了——每次循环时sum都会被赋值为当前数组元素,完全没法完成累加操作。
  • 循环里还用到了elmt[i],但你根本没在循环里对i做任何赋值,这个i是未定义的,根本取不到正确的数组元素。
  • 数组初始化的写法太繁琐啦,完全可以用数组字面量一步到位。

修正后的for-of循环代码

先给你一个能正常运行的for-of版本:

// 用数组字面量简化初始化,更简洁
const elmt = [0, 1, 2, 3, 4, 7, 8, 9, 10, 11];
let sum = 0;

// for-of循环用新变量接收当前元素,避免覆盖总和变量
for (const num of elmt) {
  sum += num; // 数组里都是数字,不用额外parseInt转换
}

const avg = sum / elmt.length;
// 建议用DOM操作指定元素,代替document.write(后者可能覆盖页面内容)
document.getElementById("demo").textContent = `The sum of all the elements is: ${sum} The average is: ${avg}`;

更简便的实现方法

如果想要更紧凑的写法,推荐用数组的reduce方法来计算总和,一行就能搞定求和:

const elmt = [0, 1, 2, 3, 4, 7, 8, 9, 10, 11];
const sum = elmt.reduce((total, currentNum) => total + currentNum, 0);
const avg = sum / elmt.length;

document.getElementById("demo").textContent = `The sum of all the elements is: ${sum} The average is: ${avg}`;

reduce会遍历数组,每次把当前元素加到累加器total里,最后直接返回总和,非常适合这种求和场景。

另外提个小建议:尽量别用document.write,如果在页面加载完成后调用它,会直接覆盖整个页面内容;操作指定DOM元素的textContent或innerHTML会更安全规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:55:37