unflatten flat array
by godwin gabriel
HTML
<html>
<head>
<title>Unflatten a flat Array</title>
</head>
<body>
<h3></h3>
</body>
</html>
JavaScript
let arr = [
{'id':1 ,'parentid' : 0},
{'id':4 ,'parentid' : 2},
{'id':3 ,'parentid' : 1},
{'id':5 ,'parentid' : 0},
{'id':6 ,'parentid' : 0},
{'id':2 ,'parentid' : 1},
{'id':7 ,'parentid' : 4},
{'id':8 ,'parentid' : 1}
];
function getUnflatten(arr, parentid) {
var output = []
for(const obj of arr) {
if(obj.parentid == parentid) {
var children = getUnflatten(arr, obj.id)
if(children.length) {
obj.children = children
}
output.push(obj)
}
}
return output
}
let tree = getUnflatten(arr, 0)
document.body.innerHTML = `<pre> ${JSON.stringify(tree, null, ' ')}`