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

获取数组中位数遇阻,嵌套数组计算均值并保留名称求助

解决温度数据均值计算与表格展示问题

嘿,别发愁啦!我帮你梳理下代码里的问题,然后给出修复方案,保证能正确计算每个城市的温度均值(medel),还不会弄丢城市名~

你的代码里的几个核心问题

  • 误删城市名:你用了newArray[i].shift(),这个方法会直接删除数组的第一个元素(也就是城市名),这肯定不是你想要的。
  • 计算总和而非均值:当前代码只算了温度的总和,没有除以数据个数(3组)得到均值。
  • 数组操作混乱:同时操作tempen和newArray两个数组,容易导致数据不同步,增加调试难度。

修复后的完整代码

var tempen = [
    ["", "00-08", "08-16", "16-24"],
    ["Malmö", 12, 16, 9],
    ["Mariestad", 13, 15, 10],
    ["Stockholm", 13, 15, 13],
    ["Upphärad", 14, 16, 15],
    ["Göteborg", 13, 14, 12]
];

// 给表头添加"medel"列
tempen[0].push("medel");

// 遍历每个城市的数据行(从索引1开始,跳过表头)
for (var i = 1; i < tempen.length; i++) {
    // 提取当前行的温度数据(跳过索引0的城市名)
    var temperatureValues = tempen[i].slice(1);
    // 计算温度总和,reduce添加初始值0避免异常
    var total = temperatureValues.reduce(function(prev, curr) {
        return prev + curr;
    }, 0);
    // 计算均值,保留1位小数和示例格式一致
    var average = (total / 3).toFixed(1);
    // 将均值添加到当前行的末尾
    tempen[i].push(parseFloat(average));
}

function printit() {
    var tableHTML = "<table border='1'>"; // 添加边框让表格更清晰
    for (var i = 0; i < tempen.length; i++) {
        tableHTML += "<tr>";
        tempen[i].forEach(function(cell) {
            tableHTML += "<td>" + cell + "</td>";
        });
        tableHTML += "</tr>";
    }
    tableHTML += "</table>"; // 别忘了关闭表格标签
    document.getElementById("kontainer").innerHTML = tableHTML;
}

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

关键修改说明

  1. 保留城市名:用slice(1)提取温度数据,不会修改原数组的城市名,完美保留每个城市的标识。
  2. 正确计算均值:总和除以3(每组3个温度数据),并用toFixed(1)控制小数位数,和你给出的示例结果完全匹配。
  3. 简化数组操作:直接在原tempen数组上修改,避免多数组操作的混乱。
  4. 优化表格生成:用forEach简化单元格遍历,同时添加表格边框,让展示效果更直观。

额外补充:如果需要计算中位数

如果你说的“中位数”是笔误,但确实需要计算中位数的话,只需要把均值计算的部分换成下面的代码:

// 计算中位数:排序后取中间值(3个数的话就是索引1的元素)
var sortedTemps = temperatureValues.sort(function(a, b) { return a - b; });
var median = sortedTemps[1];
tempen[i].push(median);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:33:52