2015-06-24 82 views
1

我试图创建树的JSON为建立一个jqtree以下数据jqtree构建树的JSON从数据

var data = [ 
    { 
     "director": "Name1", 
     "name": "sub-sub-child1", 
     "teamname": "sub-child1", 
     "teamManager": "child1" 
    }, 

    { 
     "director": "Name1", 
     "name": "sub-sub-child2", 
     "teamname": "sub-child1", 
     "teamManager": "child1" 
    }, 
    { 
     "director": "Name1", 
     "name": "sub-sub-child2", 
     "teamname": "sub-child2", 
     "teamManager": "child2" 
    }, 
    { 
     "director": "Name2", 
     "name": "sub-sub-child1", 
     "teamname": "sub-child1", 
     "teamManager": "child1" 
    }, 
    { 
     "director": "Name2", 
     "name": "sub-sub-child2", 
     "teamname": "sub-child2", 
     "teamManager": "child2" 
    }, 
    { 
     "director": "Name3", 
     "name": "sub-sub-child1", 
     "teamname": "sub-child1", 
     "teamManager": "child1" 
    }, 
    { 
     "director": "Name3", 
     "name": "sub-sub-child2", 
     "teamname": "sub-child2", 
     "teamManager": "child2" 
    } 
]; 

console.log(data); 

var aNode = []; 
       var aTempNode = []; 
       $.each(data, function(index, value) { 
        //console.log(value); 
        var key = {}; 
        if($.inArray(value.director, aTempNode) == -1) { 
         aTempNode.push(value.director); 
         key['label'] = value.director; 
         key['children'] = [{label: value.teamManager, children: [{label: value.teamname, children: [{label: value.name}]}]}]; 
         aNode.push(key); 
        } else { 
         //console.log(aNode) 
         if(key['teamname'] == aNode.children) { 

         } 
        } 

       }); 
       console.log(aNode); 

fiddle

EDIT2

树应该是在这种形式下

Name1 
| 
|___child1 
|  | 
|  |___sub-child1 
|  |  | 
|  |  |___sub-sub-child1 
|  |  |___sub-sub-child2 
|  | 
|  |___sub-child2 
|   | 
|   |___sub-sub-child1 
|   |___sub-sub-child2 
| 
|____child2 

编辑1

我已经半途而废了。我很困惑如何从这里开始。 fiddle

回答

2

试试这个, 你会得到你的“温度”需要什么变量

var temp = []; 
 
$.each(data, function(row, val) { 
 
\t var director = $.grep(temp, function(v) { 
 
\t \t return v.label == val.director 
 
\t }); 
 

 
\t if (director.length) { 
 
\t \t var teamManager = $.grep(director[0].children, function(v) { 
 
\t \t \t return v.label == val.teamManager 
 
\t \t }) 
 
\t \t if (teamManager.length) { 
 
\t \t \t var teamname = $.grep(teamManager[0].children, function(v) { 
 
\t \t \t \t return v.label == val.teamname 
 
\t \t \t }) 
 
\t \t \t if (teamname.length) { 
 
\t \t \t \t var name = $.grep(teamname[0].children, function(v) { 
 
\t \t \t \t \t return v.label == val.name 
 
\t \t \t \t }) 
 
\t \t \t \t if (!name.length) { 
 
\t \t \t \t \t teamname[0].children.push({ 
 
\t \t \t \t \t \t label: val.name, 
 
\t \t \t \t \t \t children: [] 
 
\t \t \t \t \t }); 
 
\t \t \t \t } 
 
\t \t \t } else { 
 
\t \t \t \t teamManager[0].children.push({ 
 
\t \t \t \t \t label: val.teamname, 
 
\t \t \t \t \t children: [{ 
 
\t \t \t \t \t \t label: val.name, 
 
\t \t \t \t \t \t children: [] 
 
\t \t \t \t \t }] 
 
\t \t \t \t }); 
 
\t \t \t } 
 

 
\t \t } else { 
 
\t \t \t director[0].children.push({ 
 
\t \t \t \t label: val.teamManager, 
 
\t \t \t \t children: [{ 
 
\t \t \t \t \t label: val.teamname, 
 
\t \t \t \t \t children: [{ 
 
\t \t \t \t \t \t label: val.name, 
 
\t \t \t \t \t \t children: [] 
 
\t \t \t \t \t }] 
 
\t \t \t \t }] 
 
\t \t \t }) 
 
\t \t } 
 
\t } else { 
 
\t \t temp.push({ 
 
\t \t \t label: val.director, 
 
\t \t \t children: [{ 
 
\t \t \t \t label: val.teamManager, 
 
\t \t \t \t children: [{ 
 
\t \t \t \t \t label: val.teamname, 
 
\t \t \t \t \t children: [{ 
 
\t \t \t \t \t \t label: val.name, 
 
\t \t \t \t \t \t children: [] 
 
\t \t \t \t \t }] 
 
\t \t \t \t }] 
 
\t \t \t }] 
 
\t \t }); 
 
\t } 
 

 
});

+0

非常感谢你,它就像一个魅力,但它产生空儿节点虽然没有孩子。 http://jsfiddle.net/ts9v17xt/28/ – user525146