можно как-то переделать этот массив в наследованный? То есть все объекты у которых есть поле parent переходили в другой массив этого самого родительского объекта в поле children?
const tranform = input => { const cache = {} const result = [] input.forEach(elem => { cache[elem.id] = elem if (elem.parentId) { const parentElem = cache[elem.parentId] parentElem.children = parentElem.children ?? [] parentElem.children.push(elem) } else { result.push(elem) } }) return result }
return в forEach?
а если элемент с parentId будет до того, как появится родительский?
Хотел написать свой код и меня этот вопрос побеспокоил тоже Если говнокодить то можно отсортировать))
Можно сначала закешить все первым проходом, и вторым уже закдывать все обьекты либо в массив детей либо в результирующий
Ну тоже верно, в принципе неплохой вариант
зачем? 2 раза https://jsbin.com/behasucewa/edit?js,console
Обсуждают сегодня