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);