开发者社区> 问答> 正文

关于父子节点无限级查询

常情况下 数据库中查询出来的结果是这样的json [{'id':'1' ,'name':'1',fid='0'},{'id':'2' ,'name':'2',fid='1'},{'id':'3' ,'name':'3',fid='1'},{'id':'4' ,'name':'4',fid='2'},{'id':'5' ,'name':'5',fid='3'},{'id':'6' ,'name':'6',fid='4'}]

怎么让查询出来的json呈现成树形结构的

 [{'id':'1' ,'name':'1',fid='0' ,'children':[

                                    {'id':'2' ,'name':'2',fid='1','children':[

                                                                            {'id':'4' ,'name':'4',fid='2','children': [

                                                                                                {'id':'6' ,'name':'6',fid='4'}

                                                                                                                            ]}
                                                                                     ]}
                                                 
                                         {'id':'3' ,'name':'3',fid='1','children':[

                                                                            {'id':'5' ,'name':'5',fid='3'}

                                                                                         ]}
                                              ]}   ]

展开
收起
小旋风柴进 2016-03-11 13:26:41 2067 0
1 条回答
写回答
取消 提交回答
  • var data = [
     {'id':'1' ,'name':'1',fid:'0'},
     {'id':'2' ,'name':'2',fid:'1'},
     {'id':'3' ,'name':'3',fid:'1'},
     {'id':'4' ,'name':'4',fid:'2'},
     {'id':'5' ,'name':'5',fid:'3'},
     {'id':'6' ,'name':'6',fid:'4'}
    ];
     
     
     
     
     
     
    function tree(data) {
     var indexs = [];
     for(var i = 0;i < data.length;i++) {
     indexs[data[i].id] = i;
     data[i].child = [];
     }
     console.log(indexs);
     for(var j = data.length-1;j >= 0;j--) {
            var _pid = data[j].fid;
            console.log("j:"+j+",pid:"+_pid);
            if(_pid !=0) {
                data[indexs[_pid]].child.push(data[j]);
                delete data[j];
                console.log("delete:"+j);
            }
     }
       
     return data;
    };
     
     
    console.log(tree(data));
    2019-07-17 18:59:01
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
重新定义计算的边界 立即下载
用计算和数据去改变整个世界 立即下载
数据带来无限可能 立即下载