Как объединить два массива (дерево)?

У менять есть два древовидных массива и я хочу их объединить

Первый:

[
 {
  id: 1,
  title: 'root 1',
  children: [
   {
    id: 2,
    title: 'first child 2'
   },
   {
    id: 3,
    title: 'first child 3'
   }
  ]
},
{
 id: 4,
 title: 'root 4',
 children: [
   {
    id: 5,
    title: 'second child 5'
   },
  ]
 },
 {
  id: 6,
  title: 'root 6',
 }
]

Второй:

 [
  {
   id: 1,
   title: 'root 1',
   children: [
    {
     id: 31,
     title: 'first child 31',
     children: [
       {
        id: 32,
        title: 'first child 32',
       }
     ]
  }
]
},
{
 id: 4,
 title: 'root 4',
},
{
 id: 5,
 title: 'second child 5',
 children: [
   {
    id: 2,
    title: 'first child 2'
   },
  ]
 }
]

В результате я хочу взять второй массив как основной (порядок и расположение ключей относительно корня) и обьединить его с первым. Вложенность и порядок ключей может различаться в двух массивах, но id всегда будут оставаться уникальными. В результате я хочу получить:

[
 {
  id: 1,
  title: 'root 1',
   children: [
    {
     id: 3,
     title: 'first child 3'
    },
    {
     id: 31,
     title: 'first child 31',
      children: [
       {
        id: 32,
        title: 'first child 32',
       }
      ]
     }
    ]
   },
   {
    id: 4,
    title: 'root 4',
   },
   {
    id: 5,
    title: 'second child 5',
    children: [
   {
    id: 2,
    title: 'first child 2'
   },
  ]
 },
 {
  id: 6,
  title: 'root 6',
 }
]

Как можно сделать это рекурсивно?


Ответы (0 шт):