实现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
相关产品推荐
相关产品推荐

