Javascript 需要从json记录集形成树json

Javascript 需要从json记录集形成树json,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我使用angularjs作为前端,nodejs作为服务提供者。NodeJ将数据发送到JSON对象中的angularjs $scope.data = [ {"id": 53,"title": "Scene 1","sc_parentnodes": 0}, {"id": 54,"title": "Scene 1.1","sc_parentnodes": 53}, {"id": 55,"title": "Sc

我使用angularjs作为前端,nodejs作为服务提供者。NodeJ将数据发送到JSON对象中的angularjs

 $scope.data =  
        [
            {"id": 53,"title": "Scene 1","sc_parentnodes": 0},
            {"id": 54,"title": "Scene 1.1","sc_parentnodes": 53},
            {"id": 55,"title": "Scene 1.2","sc_parentnodes": 53},
            {"id": 56,"title": "Scene 2","sc_parentnodes": 0},
            {"id": 57,"title": "Scene 2.1","sc_parentnodes": 56},
            {"id": 58,"title": "Scene 2.2","sc_parentnodes": 56}
        ]
但我需要以下面的格式绑定angular ui treetable上的数据

    $scope.data =    [
           {   "id": 53,
                "title": "Scene 1",
                "sc_parentnodes":
                                 [
                                    {"id": 54,"title": "Scene 1.1","sc_parentnodes": []},
                                    {"id": 55,"title": "Scene 1.2","sc_parentnodes": []}
                                ]
            },
            {   "id": 56,
                "title": "Scene 2",
                "sc_parentnodes": [
                                    {"id": 57,"title": "Scene 2.1","sc_parentnodes": []},
                                    {"id": 58,"title": "Scene 2.2","sc_parentnodes": 56}
                                  ]
            }
        ]

在jquery或angularjs中是否有任何预定义的库/函数来框显树结构。

尝试以下方法:

$.each($scope.data,function(index1,val1) {
    $.each($scope.data,function(index,val) {
       if(val.id == val1.sc_parentnodes && val1.sc_parentnodes!=0 ) {
          array.push($scope.data[index]);
       }
    }
   val1.sc_parentnodes = array;
})

您可以使用普通JavaScript中的两个循环来实现这一点。第一个循环将用2个条目填充基本数组。第二个将使用原始()数组中的项填充基本数组中的
sc_parentnodes
节点。我相信有很多更好/更紧凑的方法可以做到这一点,但是,这是我可以很快想到的。希望这有帮助

var数据=[
{“id”:53,“标题”:“场景1”,“sc_parentnodes”:0},
{“id”:54,“标题”:“场景1.1”,“sc_parentnodes”:53},
{“id”:55,“标题”:“场景1.2”,“sc_parentnodes”:53},
{“id”:56,“标题”:“场景2”,“sc_parentnodes”:0},
{“id”:57,“标题”:“场景2.1”,“sc_parentnodes”:56},
{“id”:58,“标题”:“场景2.2”,“sc_父节点”:56}
];
var_数据=[];
//回路1
data.forEach(函数(val,ind){
if(val.sc_parentnodes==0){
_数据推送({
“id”:val.id,
“标题”:val.title,
“sc_父节点”:[]
});
}
});
var len=_data.length;
//环路2
len&(data.forEach)(函数(val,ind){
对于(变量i=0;iconsole.log(JSON.stringify(_data,null,4))否,必须以所需格式构造数据。
**
的作用是什么?它们破坏了你的json,是语法错误。我只想突出显示(粗体)元素。哦,明白了。不能在代码块中使用。