JSFiddle - React, Tailwind, and code Playground

by TekVanDo

JavaScript

var data = [
  {
    "role_id": "1",
    "parent_id": "0",
    "name": "guest"
  },
  {
    "role_id": "3",
    "parent_id": "1",
    "name": "user"
  },
  {
    "role_id": "4",
    "parent_id": "3",
    "name": "admin"
  },
  {
    "role_id": "5",
    "parent_id": "0",
    "name": "mt"
  }
];
function newTree(data,list){
    _.each(list,function(one){
        var newData = [];
        var childrens = _.filter(data,function(sec){
            if(one.role_id == sec.parent_id){
                return true;
            }else{
                newData.push(sec);
            }
        });
       console.log(newData);
        
        if(childrens.length > 0){
            _.each(childrens,function(chel){
                newTree(data,chel);
            });      
            one.children = childrens;
        }
    });
}
console.log(data);
newTree(data,data);
console.log(data);