如何基于嵌套数组对象提取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
相关产品推荐
相关产品推荐

