本人微信公众号"aeolian"~

JS树结构转list结构

树转list

    /**
     * 树转list
     */
    function treeToList(tree){
        for(var i in tree){
            var node = tree[i];
            list = [];  //结果lsit
            if (node.children.length !== 0) {  //遍历树的第一层,只有一个根结点
                //第一层加入到list中,因为根结点模块设置为虚拟结点,所以不用加入
                /*list.push({
                    id: node.id,
                    name: node.title,
                    parentId:node.parentId
                });*/
                toListDF(node.children, list, node.id);  //遍历子树,并加入到list中.
            }
        }
        return list;
    }

    /**
     * 深度优先遍历树
     * 一个递归方法
     * @params tree:要转换的树结构数据
     * @params list:保存结果的列表结构数据,初始传list = []
     * @params parentId:当前遍历节点的父级节点id,初始为null(因为根节点无parentId)
     **/
    function toListDF (tree, list, parentId) {
        for (var i in tree) { //遍历最上层
            //将当前树放入list中
            var node = tree[i];
            list.push({
                id: node.id,
                name: node.title,
                parentId:parentId
            });
            //如果有子结点,再遍历子结点
            if (node.children.length !== 0) {
                toListDF(node.children, list, node.id)  //递归
            }
        }
    }
点赞

Leave a Reply

Your email address will not be published. Required fields are marked *