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

100
09 апреля 2022, 00:50

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

Первый:

[
 {
  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',
 }
]

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

READ ALSO
Chrome Extension. Закрыть вкладку по таймеру

Chrome Extension. Закрыть вкладку по таймеру

Подскажите пожалуйста новичкуЕсть кнопка, по нажатию на неё происходит переход на страницу

120
Как динамически менять значения в кастомном селекте?

Как динамически менять значения в кастомном селекте?

Есть кастомный селек, который скрывает обычный и создает кастомный на дивах

140
как умножить числа в массиве парами

как умножить числа в массиве парами

Допустим есть массив из чисел, у которыхёlength 4 или больше, скажем:6, нужно умножить их парами, например, первый элемент со вторым, третий с четвёртым,...

187