• 简单树组织数据格式化为标准树组织数据


    概述

    在工作中,很多时候会遇到树组织,但是从数据库里面查询出来的结果是一个简单的树组织,这就需要将简单的树组织转换为标准的树组织,以便使用,本文分享一个简单的function来实现简单到标准的转换。


    简单和标准树组织数据

    1、简单树组织

    简单的树组织包含id,pid,attr等信息,是一个平铺的结构,如:

    [
    	{id:"0",pid:"-1",name:"name0"}, 
    	{id:"01",pid:"0",name:"name01"}, 
    	{id:"02",pid:"0",name:"name02"},
    	{id:"011",pid:"01",name:"name011"},
    	...
    ]
    2、标准的树组织

    标准的树组织跟简单的树组织的区别就是包含层级结构,如:

    [
    	{id:"0",pid:"-1",name:"name0",children:[
    		{id:"01",pid:"0",name:"name01",children:[
    			{id:"011",pid:"01",name:"name011"},
    			...
    		]}, 
    		{id:"02",pid:"0",name:"name02"},
    		...
    	]},
    	...
    ]

    转换函数

            _transform2NormalData:function (sNodes){
                var scope = this;
                var i,l;
                var key = scope.data.simpleData.idKey,//"id"
                    parentKey=scope.data.simpleData.pIdKey,//"pid"
                    childKey=scope.data.childKey;//"children"
                if (!key || key=="" || !sNodes) return [];
                if (sNodes.length>0) {
                    var r = [];
                    var tmpMap = [];
                    for (i=0, l=sNodes.length; i<l; i++) {
                        tmpMap[sNodes[i][key]] = sNodes[i];
                    }
                    for (i=0, l=sNodes.length; i<l; i++) {
                        if (tmpMap[sNodes[i][parentKey]] && sNodes[i][key] != sNodes[i][parentKey]) {
                            if (!tmpMap[sNodes[i][parentKey]][childKey])
                                tmpMap[sNodes[i][parentKey]][childKey] = [];
                            tmpMap[sNodes[i][parentKey]][childKey].push(sNodes[i]);
                        }
                        else {
                            r.push(sNodes[i]);
                        }
                    }
                    return r;
                }
                else {
                    return [sNodes];
                }
            }

    ---------------------------------------------------------------------------------------------------------------

    技术博客

    http://blog.csdn.NET/gisshixisheng

    在线教程

    http://edu.csdn.Net/course/detail/799
    Github

    https://github.com/lzugis/

    联系方式

    q       q:1004740957

    e-mail:niujp08@qq.com

    公众号:lzugis15

    Q Q 群:452117357(webgis)
                 337469080(Android)



  • 相关阅读:
    归并排序
    快速排序
    冒泡排序
    排序算法复杂度
    [LeetCode] 20. Valid Parentheses ☆(括号匹配问题)
    makefile编写helloworld
    shell的通俗理解
    PID三种参数的理解
    PID的原理
    PID控制温度
  • 原文地址:https://www.cnblogs.com/lzugis/p/6539761.html
Copyright © 2020-2023  润新知