JSFiddle - React, Tailwind, and code Playground
JavaScript
data = [
{
id:"id2",
parentId:"id3"
},
{
id:"id4",
parentId:"id2"
},
{
id:"id3",
parentId:"id1"
},
{
id:"id5",
parentId:"id1"
}
];
var top=document.createElement("div");
top.id="id1";
document.body.appendChild(top);
// first create all children at the same level
var divs=data.map(function(object){
var d=document.createElement("div");
d.id=object.id;
d.dataset.parent=object.parentId;
d.innerHTML=d.id;
document.body.appendChild(d);
return d;
});
// then move them under their respective parent
for (var i=0;i<divs.length;i++) {(function(index){
document.getElementById(divs[index].dataset.parent).appendChild(divs[index]);
})(i);
}
// then calculate the level
top.dataset.level="1";
var topChildren=top.getElementsByTagName("div");
for (var i=0;i<topChildren.length;i++) {
topChildren[i].dataset.level=parseInt(topChildren[i].parentNode.dataset.level)+1;
}
document.write(document.body.innerHTML);