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

JavaScript处理JSON小数做气候分区时出现undefined/NaN问题

问题根因

报错的核心原因是字段拼写不匹配:
你提供的JSON文件中,annual_average节点下的温度字段被错写为tempertur,但代码中读取的是temperature。读取对象不存在的属性时,JavaScript会返回undefined,undefined和任意数值做大小比较结果都为false,导致所有判断分支都没有触发,k1始终未被赋值,最终输出undefined。
另外你给出的测试数据中年均降水量为880,远大于250,所以第一个判断precipitation < 250也不会触发。

修复方案

你可以二选一即可:

  1. 修改JSON文件的字段拼写
    将JSON中annual_average的温度字段改为和其他月份一致的拼写:
"annual_average": {
  "temperature": 15.5,
  "precipitation": 880
}

修改后原有代码可直接正常运行,最终输出结果为A。

  1. 调整代码适配现有JSON
    如果JSON文件不可修改,把代码中所有读取annual_average.temperature的位置改为annual_average.tempertur即可,参考修改后的代码:
const data = require("./data.json");
let k1;
if (data.tabel[0].annual_average.precipitation < 250) {
  k1 = "B";
} else if (data.tabel[0].annual_average.tempertur > 15) {
  k1 = "A";
} else if (data.tabel[0].annual_average.tempertur > 12) {
  k1 = "C";
} else if (data.tabel[0].annual_average.tempertur > 0) {
  k1 = "D";
} else if (data.tabel[0].annual_average.tempertur > -10) {
  k1 = "E";
} else {
  k1 = "F";
}
console.log(k1);

建议额外增加最后的兜底else分支,避免极端边界情况出现未赋值的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:54:01