Задать вопрос
luemerg
@luemerg

Как перенести дочерний объект?

Имеется массив объектов:
const boxes = [
{
    id: 1,
    inner: [
        {
            id: 2,
            inner: [
                {
                    id: 3,
                    inner: []
                },
                {
                    id: 4,
                    inner: []
                }
            ]
        }, 
        {
            id: 5,
            inner: []
        }
    ]
}]


Необходимо написать алгоритм который будет брать объект box_id и будет перемещать его в to_id.

Пусть функция будет putBox, тогда после выполнения putBox(3, 1) получится:
const boxes = [
{
    id: 1,
    inner: [
        {
            id: 2,
            inner: [
                {
                    id: 4,
                    inner: []
                }
            ]
        }, 
        {
            id: 5,
            inner: []
        },
        {
            id: 3,
            inner: []
        },
    ]
}]

То-есть из объекта box_id = 2, перенесли в box_id = 1

Алгоритм каким вижу его я
Находим элемент который хотим перенести,
Записываем этот элемент в переменную,
Удаляем этот элемент из массива,
Находим элемент в который необходимо вставить наш объект,
Пушим в свойство inner записанную ранее переменную
  • Вопрос задан
  • 74 просмотра
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
luemerg
@luemerg Автор вопроса
Дописал функцию удаления и переписал поиск (теперь функции чистые)
//GET
const findEl = (ar, id) => {
  return ar.reduce((a, el) => {
    if (a !== null)
      return a
    return el.id === id ? el : findEl(el.inner, id)
  }, null)
}
//REMOVE
const removeEl = (ar) => {
  for (let i = 0; i < ar.length; i++) {
    if (ar[i].inner.length)
      removeEl(ar[i].inner)
    if (ar[i].id === action.box_id)
      delete ar[i]
  }
}


Теперь если все красиво скоомбинировать, то все будет работать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 17:26
5000 руб./за проект
18 дек. 2024, в 17:23
1500 руб./за проект
18 дек. 2024, в 16:42
2000 руб./за проект