1) преобразуете массив в объект с помощью _.indexBy из lodash/underscore при этом так как внутри массива объекты, то полученый объект будет содержать ссылки на те же объекты
2) пробегаем исходный массив и отмечаем в childs у родителя
UPD: писал с телефона в дороге, дополню кодом
Простой вариант, как описано мною выше:
P.S. если нужно именно новый массив, не затрагивая исходный, то перед выполнением кода нужно сделать deapClone и работать уже с клоном, реализацию deapClone можете легко нагуглить
Спасибо за ваш ответ, интересный подход, но это не решает задачу. Кстати, _.indexBy из lodash/underscore переименован в keyBy (версия 4.0.0) https://github.com/lodash/lodash/wiki/Changelog
Владимир Допустим: может тогда я не понял задачу, распишите поподробнее
Насчет lodash давно уже не использую, ибо таскать ее из-за пары функций реализуемых за 5-10 минут, просто глупо
Владимир Допустим: а что именно не решает задачу? У меня недавно по работе была один в один задача, все сделал с помощью алгоритма по ссылке, немного поменяв названия полей объектов.
theWaR_13: такой результат для меня получить было не трудно, но меня заинтесовало, как можно получить именно тот результат, который я представил в условии задачи. Т.е. запись ID всех потомков в массиве, включая потомков этих потомков