Javascript 如何最好地将JSON子数据对象数组重组为父数组

Javascript 如何最好地将JSON子数据对象数组重组为父数组,javascript,arrays,json,Javascript,Arrays,Json,我们有一些JSON数据,其中每个父数组对象都可以有一个属性,该属性是一个子数组,如下所示: data: [ { value: 1, parent_id: null, label: "1.0 - TT One", children: [ { value: 3, label: "1.1 - TT One-One", parent_id: 1, }, { value:

我们有一些JSON数据,其中每个父数组对象都可以有一个属性,该属性是一个子数组,如下所示:

data: [
  {
    value: 1,
    parent_id: null,
    label: "1.0 - TT One",
    children: [
      {
        value: 3,
        label: "1.1 - TT One-One",
        parent_id: 1,
      },
     {
        value: 4,
        label: "1.2 - TT One-Two",
        parent_id: 1,
     }
    ]
  },
  {
    value: 2,
    parent_id: null,
    label: "2.0 - TT Two",
    children: [
      {
        value: 5,
        label: "2.1 - TT Two-One",
        parent_id: 2,
      }
    ]
  }
]
我们希望将子对象展平,这样我们最终得到一个数组,该数组包含所有父对象和子对象,如下所示:如果不高效,则不必保留命名数据:

data: [
  {  
    value: 1,
    parent_id: null,
    label: "1.0 - TT One"
  },
  {  <-- FORMER CHILD
    value: 3,
    label: "1.1 - TT One-One",
    parent_id: 1
   },
   {  <-- FORMER CHILD
     value: 4,
     label: "1.2 - TT One-Two",
     parent_id: 1,
   },
   {
     value: 2,
     parent_id: null,
     label: "2.0 - TT Two"
   },
   {  <-- FORMER CHILD
     value: 5,
     label: "2.1 - TT Two-One",
     parent_id: 2,
   }
]  
如何在一个高效的庄园中最好地实现这一点?我们必须强调这是否会有所帮助


找到了一堆数组到数组展平和一些对象到数组展平,但没有将两者结合起来。如果我们有这个,我们就不需要发帖了。如果从我们所拥有的到我们所需要的都不明显,那重点是什么

关键是要了解什么是您的数据结构,以及如何访问该数据结构的每个元素

因为只有两个级别,所以您甚至不需要找到将初始数据转换为数组的通用解决方案。你知道如何遍历数组吗?然后您就知道了如何遍历具有数组属性的元素

无论如何,这里有一个递归和非递归的广义解

变量d=[{ 价值:1, 父项id:null, 标签:1.0-TT-One, 儿童:[{ 价值:3, 标签:1.1-TT-One, 家长id:1, }, { 价值:4, 标签:1.2-TT 1-2, 家长id:1, } ] }, { 价值:2, 父项id:null, 标签:2.0-TT 2, 儿童:[{ 数值:5, 标签:2.1-TT 2-1, 家长编号:2, }] } ]; 函数walkRecursivedata{ 让结果=[] data.forEachelement=>{ 设e={…元素} 结果:普什; 如果e.儿童{ 让孩子们走路 result=result.concatchildren 删除e.children } }; 返回结果; } 函数数据{ data=data.slice 让结果=[] 设d,oldData; 而d=data.shift{ 设el={……d} 普希尔先生 如果孩子们{ oldData=数据 数据=el.children.slice; 删除el.children; }否则{ 如果oldData&&data.length==0{ 数据=旧数据 oldData=null; } } } 返回结果; } console.logwalkRecursived
console.logwalkd发布的问题似乎根本不包括解决问题的方法。StackOverflow希望您能这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您已尝试过的内容,以便说明您在某个问题中遇到的具体问题。有关更多信息,请参阅并获取。这是什么问题?找到了一个数组到数组展平的对接负载和一些对象到数组展平,但没有将两者结合起来。如果我们有这个,我们就不需要发帖了。如果从我们所拥有的到我们所需要的都不明显,那又有什么意义呢?问一个问题,然后得到递归的问题而不是答案?