将数组根据父元素字段关联转成一棵树

 var array = [{id: '0',parentId:null},{id: '1',parentId:'0'},{id: '2',parentId:'0'},{id: '3',parentId:'1'},{id: '4',parentId:'3'},{id: '5',parentId:'4'}];
       //排序
       array.sort(function(a,b){
            return a.id - b.id;
        });
       //数据递归
       function createTree(arr,rootid){
           var carr=findChild(arr,rootid);
           if(!carr.length){
               return null;
           }
           for(var i=0;i<carr.length;i++){
               var cTree=createTree(arr,carr[i].id);
               if(cTree!==null){
                   carr[i]['children']=cTree;
               }
           }
           return carr;
       }

       //获取子元素
        function findChild(arr,id){
            var cArr=[];
            for(var i=0; i<arr.length;i++){
                if(arr[i].parentId===id){
                    cArr.push(arr[i])
                }
            }
            return cArr;
        }
       console.log(createTree(array,null));
原文地址:https://www.cnblogs.com/zml-mary/p/7693790.html