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

JavaScript对象数组平展1层并追加父属性的实现优化问询

解决方案

原代码问题修正

你现有的代码存在笔误:展开的变量名错误,应该是当前遍历到的子元素co而非children,修正后可正常运行,但写法可以更简洁。

更简洁的实现方式

可以用flatMap语法简化嵌套写法,本质逻辑和两层循环完全一致,没有额外性能损耗,也不需要手动维护结果数组:

const eObj = obj.flatMap(parent => {
  // 遍历当前父元素的所有子元素,拼接父属性
  return parent.children.map(child => ({
    p_id: parent.id,
    p_name: parent.name,
    ...child
  }))
})
// 如果存在父元素没有children的场景,兼容写法为 parent.children || []

关于是否可以去掉嵌套循环

无法从逻辑层面消除嵌套遍历:你需要将每一个子元素和对应的父元素属性做绑定,必须遍历所有父元素,再遍历每个父元素下的所有子元素,总遍历次数等于所有子元素的总数量,时间复杂度稳定为O(n),所有写法的底层逻辑都和你的两层循环一致,只是语法封装后看起来没有显式嵌套。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 15:51:01