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, ' ')}`