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

如何在TypeScript中遍历嵌套JSON对象获取指定层级数据?

解决方案:获取多层级JSON数据

1. 嵌套forEach实现(直观易读)

你的JSON结构里,每个顶层Parent对应的是仅含一个对象的数组,要拿到Data1/Data2这类数据,用嵌套forEach可以直观逐层遍历:

// 假设parent是你的顶层JSON对象
Object.keys(parent).forEach(parentKey => {
  // 取每个Parent数组的第一个元素(你的结构里每个Parent数组只有一个元素)
  const parentItem = parent[parentKey][0];
  // 遍历这个元素的所有键(即Data1、Data2)
  Object.keys(parentItem).forEach(dataKey => {
    const targetData = parentItem[dataKey];
    console.log(`${dataKey}:`, targetData);
    // 这里可以处理拿到的Data数组,比如["Item1","Item2"]
  });
});

2. 更简洁的链式写法(TS数组方法优化)

如果追求更简洁的代码,可以用Object.values、flatMap、Object.entries组合,直接提取所有目标数据:

// 一次性获取所有DataX的键值对
const allTargetData = Object.values(parent)
  // 展开每个Parent的数组(因为每个Parent数组只有一个元素,flatMap直接取[0])
  .flatMap(parentArr => parentArr)
  // 把每个对象转成键值对数组
  .flatMap(item => Object.entries(item));

// 遍历处理结果
allTargetData.forEach(([dataKey, dataValue]) => {
  console.log(`${dataKey}:`, dataValue);
});

这种写法避免了嵌套,更符合函数式编程风格,代码更紧凑。

3. TypeScript类型优化(避免any)

既然用TS,建议给JSON结构定义类型,减少any的使用,提升代码健壮性:

// 定义目标数据类型
type DataItem = {
  [key: string]: string[];
};

// 定义顶层JSON类型
type ParentObject = {
  [key: string]: DataItem[];
};

// 使用时指定类型
const parent: ParentObject = {
  "Parent1": [{"Data1": ["Item1","Item2"]}],
  "Parent2": [{"Data2": ["Item3","Item4"]}]
};

// 之后的遍历代码会自动有类型提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:30:43