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

Как массив превратить в дерево?

Есть массив объектов:
[{ id: 1,
  name: 'Еда',
  description: '',
  parent: null,
  delivery: false,
  stop: true },
{ id: 2,
  name: 'Фастфуд',
  description: '',
  parent: 1,
  delivery: false,
  stop: true },
{ id: 3,
  name: 'Картофель фри',
  description: '',
  parent: 2,
  delivery: false,
  stop: true },
{ id: 4,
  name: 'Здоровое питание',
  description: '',
  parent: 1,
  delivery: false,
  stop: true },
{ id: 5,
  name: 'Морковь',
  description: '',
  parent: 4,
  delivery: false,
  stop: true }]


Как из этого сделать вот такой объект?
"Еда": {
		"stop": true,
		"id": 1,
		"delivery": true,
		"cat": {
			"Фастфуд": {
				"stop": true,
				"id": 2,
				"delivery": true,
				"cat": {
					"Картофель фри": {
						"stop": true,
						"id": 3,
						"delivery": true,
						"cat": {
							
						}
					}
				}
			},
			"Здоровое питание": {
				"stop": true,
				"id": 4,
				"delivery": true,
				"cat": {
					"Морковь": {
						"stop": true,
						"id": 5,
						"delivery": true,
						"cat": {
							
						}
					}
				}
			}
		}
	}
  • Вопрос задан
  • 164 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
function createTree(data) {
  const tree = { null: { cat: {} } };

  data.forEach(n => tree[n.id] = { cat: {}, ...n });
  data.forEach(n => tree[n.parent].cat[n.name] = tree[n.id]);

  return tree.null.cat;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы