Сообщение от Русский
|
Мой всё равно более компактный и с рекурсией, как просили.
|
Если ваша компактность измеряется в количестве переводов строк, то я могу сделать более компактней...
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);
}
И тут уже есть определение функции createTree! А у вас его нет! Так где же ваша компактность, когда на каждый массив придётся писать...
const Новый_массив = Массив.filter(зн => зн.parentId === null).map(зн => Найти_выродков(Массив, зн));
против более компактного
createTree(Массив);
от
Alexandroppolus!
Сообщение от Русский
|
и с рекурсией
|
Это предположение того, как, может быть, решается! Вы вправе предоставить более эффективный способ!