djamali
@djamali
web developer

Как из одного объекта получить другой?

У меня на фронте требуется массив вида:
departments: [
                        {
                            name: 'Уровень 1',
                            value: 'Уровень 1',
                            children: [
                                {
                                    name: 'Подотдел. Уровень 1.1',
                                    value: 'Подотдел. Уровень 1.1',
                                    children: [
                                        {
                                            name: 'Подотдел. Уровень 1.1.1',
                                            value: 'Подотдел. Уровень 1.1.1',
                                            children: [
                                                {
                                                    name: 'Подотдел. Уровень 1.1.1.1',
                                                    value: 'Подотдел. Уровень 1.1.1.1',
                                                    children: [
                                                        {
                                                            name: 'Подотдел. Уровень 1.1.1.1.1',
                                                            value: 'Подотдел. Уровень 1.1.1.1.1',
                                                            children: [
                                                                {
                                                                    name: 'Подотдел. Уровень 1.1.1.1.1.1',
                                                                    value: 'Подотдел. Уровень 1.1.1.1.1.1',
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                }
                                            ]
                                        }
                                    ]
                                },
                                {
                                    name: 'Подотдел. Уровень 1.2',
                                    value: 'Подотдел. Уровень 1.2'
                                },
                                {
                                    name: 'Подотдел. Уровень 1.3',
                                    value: 'Подотдел. Уровень 1.3'
                                }
                            ]
                        }
                    ],

с бекэнда приходит такой json:
656870587a4d1394917648.png

как мне привести это json к виду departments ?
Был бы очень признателен так как познаний во фронте не достаточно для решения.
  • Вопрос задан
  • 188 просмотров
Решения вопроса 1
szQocks
@szQocks
Просмотрел JSON данные, они там уже были распределены правильно, как по DEPTH_LEVEL так и по IBLOCK_SECTION_ID и даже отсортированы.

Прошёлся по дереву, и заменил все children с объектов на массив, а где небыло children - просто добавил это свойство с пустым массивом

const mapTree = o => {
  
  const recursy = root => {
    if(typeof root.children === 'object'){
      return {...root, children: Object.values(root.children).map(recursy) }
    }
    
    return {...root, children: [] };
  }
  
  return [{...o, children: Object.values(o.children).map(recursy) }];
}


const result = { departments: mapTree(data) };
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы