Показать сообщение отдельно
  #5 (permalink)  
Старый 26.07.2019, 02:05
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Ещё вариант...
function createTree(array = []) {
	var map = new Map();

	for(const item of array)
		if(map.has(item.parentId))
			map.get(item.parentId).push(item);
		else
			map.set(item.parentId, [item]);

	for(const [parentId, items] of map)
		for(const item of items)
			if(map.has(item.id))
				item.children = map.get(item.id);

	return map.get(null);
}


В исходном массиве элементы могут идти в любом порядке!
Ответить с цитированием