Преобразовать массив родительский-дочерний в дерево
Может ли кто-нибудь помочь преобразовать следующий список родительско-дочерних объектов:
[ { "name":"root", "_id":"root_id", }, { "name":"a1", "parentAreaRef":{ "id":"root_id", }, "_id":"a1_id", }, { "name":"a2", "parentAreaRef":{ "id":"a1_id", }, "_id":"a2_id", }, { "name":"a3", "parentAreaRef":{ "id":"a2_id", }, "_id":"a3_id", }, { "name":"b1", "parentAreaRef":{ "id":"root_id", }, "_id":"b1_id", }, { "name":"b2", "parentAreaRef":{ "id":"b1_id", }, "_id":"b2_id", }, { "name":"b3", "parentAreaRef":{ "id":"b1_id", }, "_id":"b3_id", } ]
в древовидную структуру, показывающую отношения родитель-ребенок:
[ { "name": "root", "_id":"root_id", "children": [ { "name": "a1", "_id":"a1_id", "children" : [ { "name" : "a2", "_id":"a2_id", "children" : [ { "name" : "a3" "_id":"a3_id" } ] } ] }, { "name": "b1", "_id":"b1_id", "children" : [ { "name" : "b2" "_id":"b2_id" }, { "name" : "b3" "_id":"b3_id" } ] } ] } ]
(Выходная структура представляет собой массив для нескольких корней, но если мы сможем получить решение, которое обрабатывает один корень, который 'тоже здорово.)
Выходное дерево выглядит так:
root | -- a1 | | | -- a2 | | | -- a3 | -- b1 | -- b2 -- b3
Спасибо!