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

JavaScript作业求助:温度平均值计算中Math.round使用及NaN问题解决

解决温度平均值计算的NaN问题与取整需求

我来帮你搞定这两个问题!咱们先理清问题根源,再看修复后的代码:

问题分析

1. 右上角NaN的原因

你的循环遍历了数组的每一行,包括第一行的表头(["City", "00-08", "08-16", "16-24", "Average"])。当处理表头行时:

  • temp[i][1]是字符串"00-08",和其他字符串相加会得到NaN
  • 对表头行执行shift()完全没必要,还会破坏原数组的结构

2. Math.round的正确位置

只需要把计算出的平均值结果用Math.round()包裹,就能实现对数值取整。

修复后的完整代码

<h1>Temperature in different cities (Assignment1)</h1>
<div id="container"></div>

<script>
var temp = [ 
  ["City", "00-08", "08-16", "16-24", "Average"], 
  ["New York", 12, 16, 9], 
  ["London", 13, 15, 10], 
  ["Stockholm", 13, 15, 13], 
  ["Oslo", 14, 16, 15], 
  ["Hong Kong", 13, 14, 12] 
];

function printit() {
  var MyinnerHTML = "<table border='1'>";
  for (i = 0; i < temp.length; i++) { // 遍历每一行
    MyinnerHTML += "<tr>";
    // 先渲染当前行的所有单元格
    for (j = 0; j < temp[i].length; j++) {
      MyinnerHTML += "<td>" + temp[i][j] + "</td>";
    }
    // 只对数据行(非表头)计算平均值
    if (i !== 0) {
      // 计算3个时段的总和,直接取固定索引更可靠
      var total = temp[i][1] + temp[i][2] + temp[i][3];
      // 计算平均值并取整
      var average = Math.round(total / 3);
      MyinnerHTML += "<td>" + average + "</td>";
    }
    MyinnerHTML += "</tr>"; // 修复原代码的标签错误,应该是</tr>而不是<tr/>
  }
  MyinnerHTML += "</table>";
  document.getElementById("container").innerHTML = MyinnerHTML;
}

// 调用函数生成表格
printit();
</script>

关键修改点

  • 跳过表头行的平均值计算(通过if (i !== 0)判断)
  • 不再修改原数组(移除了shift()),直接使用固定的3个时段温度索引计算总和,避免数组结构变化带来的问题
  • 用Math.round(total / 3)对平均值取整
  • 修复了HTML表格的闭合标签错误(原代码的<tr/>不符合规范,改为</tr>)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:24:04