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

如何基于嵌套数组对象提取itemData并保留原有嵌套结构生成新对象

实现思路

正向组装你需要的结构即可,全程不操作原对象、不删除任何键,不管原数据新增多少无关字段都不会影响输出,维护成本极低。

完整代码实现

// 初始化结果对象,保留顶层结构
const result = {
  page: []
}

// 遍历原数据,逐层构建新结构
for (const page of this.testingAnimation.pages) {
  const newPage = {}
  // 仅处理存在comp属性的page
  if (page.comp) {
    newPage.comp = []
    for (const comp of page.comp) {
      const newComp = {}
      // 仅处理存在items属性的comp
      if (comp.items) {
        newComp.items = []
        for (const item of comp.items) {
          // 仅保留存在itemData的项,只取itemData字段
          if (item.itemData !== undefined) {
            newComp.items.push({
              itemData: item.itemData
            })
          }
        }
      }
      newPage.comp.push(newComp)
    }
  } else {
    // 无comp属性的page原样保留所有原有属性(匹配你示例中第三个page保留num的需求)
    Object.assign(newPage, page)
  }
  result.page.push(newPage)
}

// 最终result就是你需要的目标对象
console.log(result)

逻辑说明

  • 严格保留原数据的嵌套层级:page数组长度、每个page下的comp数组长度、每个comp下的items数组长度完全和原数据一致
  • 除了itemData和必须的层级属性page/comp/items外,不会主动保留任何其他字段,完全匹配你的输出要求
  • 不需要修改原数据,不会产生副作用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:15:04