今天有个同事,问了一个关于ztree的问题, 怎么找到树的最后一个节点。闲着有空,自己按着思路写了一个存放树节点信息的程序,把对应层的节点信息放到对应的数组下标中。
var tree =
{
"name": "Root",
"childrens" : [
{
"name" : "node1",
"childrens": [{
"name" : "node2",
"childrens" :[{
"name" : "node3"
}]
},{
"name": "node4"
}]
},{
"name" : "node5"
}
]
}
;
var indexData = []; //存储树节点信息, 对应的层放对应的节点信息
//过滤childrens节点的信息
var filter = function(source){
var destince = new Object();
for(var key in source){
if(key == "childrens") continue;
destince[key] = source[key];
}
return destince;
}
var writeTreeData = function(node){
for(var i = 0; i<node.childrens.length; i++){
var childNode = node["childrens"][i];
childNode.index = node.index + 1;
if(indexData[childNode.index] == undefined){
indexData[childNode.index] = new Array();
}
indexData[childNode.index].push(filter(childNode));
if(childNode.childrens && childNode.childrens.length > 0){
getTreeData(childNode);
}
}
}
tree.index = 0;
//存放第1个节点的信息
indexData[tree.index] = [filter(tree)];
writeTreeData(tree);
console.info(indexData);
这样,找对应层数的树节点信息就更加方便了。^-^~