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

如何访问JSON文件中对象的键值并存储num字段值?

如何从嵌套JSON对象中提取所有num字段的值?

你的问题出在对JSON结构的访问路径错误,以及没有遍历到正确的层级上。先看一下你的原JSON结构:

{ 
  "001" : { "qwe" : { "num" : 52 } }, 
  "002" : { "qwe1" : { "num" : 53 } }, 
  "003" : { "qwe2" : { "num" : 54 }, "qwe3" : { "num" : 35 } } 
}

它是三层嵌套:外层是001/002/003这些键,每个对应的值又是一个对象,里面的qwe/qwe1/qwe2/qwe3才是包含num的对象的父键。你之前的代码里用了obj[keys]["Amount"],但你的结构里根本没有Amount这个键,这是第一个错误;第二个错误是没有遍历到最内层的num字段。

这里给你两种可行的解决方案:

方案1:嵌套for循环(直观易懂)

这种方式适合需要清晰看到每一层遍历过程的场景:

const obj = { 
  "001" : { "qwe" : { "num" : 52 } }, 
  "002" : { "qwe1" : { "num" : 53 } }, 
  "003" : { "qwe2" : { "num" : 54 }, "qwe3" : { "num" : 35 } } 
};

const numValues = [];

// 遍历外层的每个键(001、002、003)
for (const outerKey of Object.keys(obj)) {
  const innerParentObj = obj[outerKey];
  // 遍历中间层的每个键(qwe、qwe1、qwe2、qwe3)
  for (const innerKey of Object.keys(innerParentObj)) {
    // 提取num值并加入数组
    numValues.push(innerParentObj[innerKey].num);
  }
}

console.log(numValues); // 输出: [52, 53, 54, 35]

方案2:链式数组方法(简洁高效)

如果你喜欢更简洁的写法,可以用Object.values配合flatMap和map来实现:

const obj = { 
  "001" : { "qwe" : { "num" : 52 } }, 
  "002" : { "qwe1" : { "num" : 53 } }, 
  "003" : { "qwe2" : { "num" : 54 }, "qwe3" : { "num" : 35 } } 
};

const numValues = Object.values(obj)
  // 把中间层的所有对象展开成一个数组
  .flatMap(innerParentObj => Object.values(innerParentObj))
  // 提取每个对象里的num值
  .map(item => item.num);

console.log(numValues); // 输出: [52, 53, 54, 35]

总结一下你之前代码的问题:

  • 错误地使用了不存在的键Amount,应该访问的是num;
  • 只遍历了外层对象,没有深入到包含num的内层对象层级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 12:27:41