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

实现displayAvgLongitude函数遇问题,计算经度平均值结果异常求助

问题描述

我在完成作业最后一步时遇到了问题,要求实现displayAvgLongitude函数,需完成以下操作:

  • 获取数据
  • 求和所有经度值
  • 将总和除以数组元素个数得到平均值
  • 将结果放入id为textDisplayed5的div标签中

我编写了如下代码,但运行后得到的数值不正确,希望能得到技术建议:

function displayAvgLongitude() { 
    $.getJSON("http://misdemo.temple.edu/states",function(result){
        console.log(result);
        let answer = result[0]["longitude"];
        
        for(let i=0; i < result.length;i++){
            answer= (result[i]['longitude']/result.length)*result.length;
        }
        $('#textDisplayed5').html(answer);
    });
}
问题分析与修复

你的循环逻辑完全错误:

  • 初始时你把answer设为第一个元素的经度,但循环里的计算(result[i]['longitude']/result.length)*result.length其实等价于直接赋值当前元素的经度,这导致循环结束后answer只是最后一个元素的经度,根本没有进行求和操作,自然得不到正确的平均值。

修复后的代码:

function displayAvgLongitude() { 
    $.getJSON("http://misdemo.temple.edu/states",function(result){
        console.log(result);
        // 初始化总和为0,而非第一个元素的经度
        let totalLongitude = 0;
        
        for(let i=0; i < result.length;i++){
            // 累加每个元素的经度到总和中
            totalLongitude += result[i]['longitude'];
        }
        // 计算平均值:总和除以数组元素个数
        const avgLongitude = totalLongitude / result.length;
        // 将结果插入目标div,用toFixed控制小数位数优化显示
        $('#textDisplayed5').html(avgLongitude.toFixed(4));
    });
}

简化写法(可选)

可以使用数组的reduce方法简化求和逻辑,让代码更简洁:

function displayAvgLongitude() { 
    $.getJSON("http://misdemo.temple.edu/states",function(result){
        console.log(result);
        // 用reduce快速计算所有经度的总和
        const totalLongitude = result.reduce((sum, state) => sum + state.longitude, 0);
        const avgLongitude = totalLongitude / result.length;
        $('#textDisplayed5').html(avgLongitude.toFixed(4));
    });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:01:13