zoukankan      html  css  js  c++  java
  • 简单树组织数据格式化为标准树组织数据

    概述

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



  • 相关阅读:
    下载文件c#
    系统蓝屏重起:如何修改设置,记录系统蓝屏重起的错误
    Repeater中的行数
    2010617 重装系统遇到的问题
    ajax 修改select的值 返回的值中有逗号
    GPS数据接收 串口调试感受
    Nios II实用之音频控制
    【笔记】VB控件MSComm功能介绍
    【摘】程序员版同桌的你
    AJAX Control Toolkit ——DragPanelExtender(拖拽面板)
  • 原文地址:https://www.cnblogs.com/lzugis/p/6539761.html
Copyright © 2011-2022 走看看