zoukankan      html  css  js  c++  java
  • JavaScript 将行结构数据转化为树形结构,可提供给常用的tree插件直接使用(高效转化方案)

     前台接收到的数据格式

    var rows=[{
        parent: 'root',
        id: 'DC',
        title: '集团'
    },
    {
        parent: 'DC',
        id: '01',
        title: '上海本部'
    },
    {
        parent: 'DC',
        id: '02',
        title: '中华企业'
    },
    {
        parent: '02',
        id: '0200',
        title: '中华企业股份有限公司本部'
    },
    {
        parent: '02',
        id: '0201',
        title: '上海古北(集团)有限公司'
    },
    {
        parent: '0201',
        id: '020100',
        title: '上海古北(集团)有限公司本部'
    },
    {
        parent: '0201',
        id: '020101',
        title: '上海古北顾村置业有限公司'
    },
    {
        parent: '0201',
        id: '020102',
        title: '上海古北京宸置业发展有限公司'
    },
    {
        parent: '0201',
        id: '020103',
        title: '苏州洞庭房地产发展有限公司'
    }]
    function listToTree(data, options) {
    
        options = options || {};
        var ID_KEY = options.idKey || 'id';
        var PARENT_KEY = options.parentKey || 'parent';
        var CHILDREN_KEY = options.childrenKey || 'children';
    
        var tree = [],
        childrenOf = {};
        var item,
        id,
        parentId;
    
        for (var i = 0, length = data.length; i < length; i++) {
            item = data[i];
            id = item[ID_KEY];
            parentId = item[PARENT_KEY] || 0;
            // every item may have children
            childrenOf[id] = childrenOf[id] || [];
            // init its children
            item[CHILDREN_KEY] = childrenOf[id];
            if (parentId != 0) {
                // init its parent's children object
                childrenOf[parentId] = childrenOf[parentId] || [];
                // push it into its parent's children object
                childrenOf[parentId].push(item);
            } else {
                tree.push(item);
            }
        };
    
        return tree;
    }

     调用方法

    var treeData=listToTree(rows);

    技术交流QQ群:15129679

  • 相关阅读:
    Java Lambda 表达式 对 Map 对象排序
    比较两个list对象是否相同
    ubuntu redis 自启动配置文件(关机有密码)
    spring中订阅redis键值过期消息通知
    网站架构之性能优化(转)
    Json转Java Bean
    spring mvc 4 校验
    java @ResponseBody返回值中去掉NULL字段
    合并两个java bean对象非空属性(泛型)
    spring mvc 删除返回字符串中值为null的字段
  • 原文地址:https://www.cnblogs.com/yeminglong/p/6422507.html
Copyright © 2011-2022 走看看