JSFiddle - React, Tailwind, and code Playground
by Amal Das
JavaScript
var data = [
{
"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",
}
];
var idToNodeMap = {};
var root = null;
for(var i = 0; i < data.length; i++) {
var datum = data[i];
datum.children = [];
idToNodeMap[datum._id] = datum;
if(typeof datum.parentAreaRef === "undefined") {
root = datum;
} else {
parentNode = idToNodeMap[datum.parentAreaRef.id];
parentNode.children.push(datum);
}
}
console.log(root);