js递归树

今天有个同事,问了一个关于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; ivar 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);

这样,找对应层数的树节点信息就更加方便了。^-^~

你可能感兴趣的:(javascript)