日期:2014-05-16  浏览次数:20442 次

请教关于一维数组的js树状递归方法
后台获得json格式数据如下:
[
{"id":2,"title":"第一级1","parentid":0},
{"id":3,"title":"第二级1","parentid":2},
{"id":4,"title":"第二级2","parentid":2},
{"id":5,"title":"第三级1","parentid":4},
{"id":6,"title":"第三级2","parentid":3}
]
求前端用js递归为树状jsonObj。
注1:可以使用jquery
注2:最终结果用于easyui 的tree。若格式按照tree的Data格式更佳

------解决方案--------------------
<script>
var nodes = [
{"id":2,"title":"第一级1","parentid":0},
{"id":3,"title":"第二级1","parentid":2},
{"id":4,"title":"第二级2","parentid":2},
{"id":5,"title":"第三级1","parentid":4},
{"id":6,"title":"第三级2","parentid":3}
]


function gettree(nodes) {
 var gc = function(parentid) {
var cn = [];
for (var i = 0; i < nodes.length; i++) {
var n = nodes[i];
if(n.parentid===parentid){
n.text=n.title;
n.children = gc(n.id);
cn.push(n);
}
}
return cn;
 }
 return gc(0);
}

var newnodes = gettree(nodes);


 

//alert($.encode(newnodes));
</script>



这么写试试,没溢出啊(刚才溢出是因为我写了个死循环。已经改正了)