繁体   English   中英

将子数组连接到父数组

[英]Concatenating child array to parent

现在我有一个对象数组,孩子们也有一个对象数组。

 [
  {
    "code": "mock-code",
    "name": "mock-name",
    "children": [
      {
        "code": "mock-child-code",
        "name": "mock-child-name",
      },
      {
        "code": "mock-child-code",
        "name": "mock-child-name",
      },
    ],
  },
 {
    "code": "mock-code",
    "name": "mock-name",
    "children": [],
  },
 {
    "code": "mock-code",
    "name": "mock-name",
    "children": [
      {
       "code": "mock-code",
       "name": "mock-name",
      }
    ],
  }
]

我想提取子数组并将它们连接到父数组,如下所示。

 [
  {
    "code": "m1",
    "name": "mock-name",
    "children": [
      {
        "code": "mc-1",
        "name": "mn-1",
      },
      {
        "code": "mc-2",
        "name": "mn-2",
      },
    ],
  },
 {
    "code": "m2",
    "name": "mock-name",
    "children": [],
  },
 {
    "code": "mm3",
    "name": "mock-name",
    "children": [
      {
       "code": "mc-3",
       "name": "mn-3",
      }
    ],
  }
  {
    "code": "mc-1",
    "name": "mn-1",
  },
  {
    "code": "mc-2",
    "name": "mn-2",
  },
   {
    "code": "mc-3",
    "name": "mn-3",
  }
] 

有什么办法可以做到这一点。 我目前正在循环创建一个新数组,检查它是否不为空。 这一切似乎有点乱。 有没有干净的方法来做到这一点?

   let fullList = New Array()
   parentData.forEach(element => {
      if (!!element.children.length) {
       fullList.push(element.children);
      }
    });

   return parentData.concat(fullList);

这没有给我想要的结果,因为它向父对象添加了另一个数组,但这就是我所处的位置。

const newArray = originalArray.flatMap(element => [element, ...element.children])

这应该这样做,并且作为奖励将保留顺序(父母1,父母1的孩子,父母2,父母2的孩子等)

当然,如果您只有一层嵌套,这会起作用。 如果您有更大的深度级别,那会更复杂一些,可能使用 Array.prototype.reduce()。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM