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

如何在JSON遍历中排除非对象类型的键?代码报错求助

问题解决方法

错误原因

你当前的判断逻辑完全错了:if(data[key] != "Update_Date")是拿属性值和字符串"Update_Date"对比,但data["Update_Date"]的值是"2023-03-15 14:00:01",根本不等于"Update_Date",所以这个判断无法跳过Update_Date键。循环到它时,尝试访问data[key].Sell就会报错——因为字符串没有Sell属性。

另外你用instanceof Array无效,是因为USD、EUR这些是普通对象(Object),不是数组,所以这个判断条件永远不成立。

两种可行解决方案

方案1:直接跳过Update_Date键

最直接的方式,判断当前循环的key是否是"Update_Date",是的话直接跳过:

let t = 0;
for (const key in data) {
  // 跳过Update_Date键
  if (key === "Update_Date") continue;
  
  const sellStr = data[key].Sell;
  // 替换逗号为小数点后转成数字
  const sellNum = parseFloat(sellStr.replace(",", "."));
  t += sellNum;
}
console.log(t); // 输出:39.1616

方案2:通用判断(推荐)

如果以后可能新增其他非货币类型的键,用这种方式更稳妥——判断当前属性值是对象且包含Sell属性:

let t = 0;
for (const key in data) {
  const item = data[key];
  // 确保是对象且存在Sell属性
  if (typeof item === "object" && item !== null && "Sell" in item) {
    const sellNum = parseFloat(item.Sell.replace(",", "."));
    t += sellNum;
  }
}
console.log(t); // 输出:39.1616

额外说明

你代码里的parseInt(data[key].Sell);是多余的,直接用parseFloat处理即可;另外console.log(toplam);里的toplam应该是t,注意变量名拼写正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:57:28