前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单树组织数据格式化为标准树组织数据

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

作者头像
lzugis
发布2018-10-23 11:38:00
6610
发布2018-10-23 11:38:00
举报
文章被收录于专栏:跟牛老师一起学WEBGIS

概述

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

简单和标准树组织数据

1、简单树组织

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

代码语言:javascript
复制
代码语言:javascript
复制
[
	{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、标准的树组织

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

代码语言:javascript
复制
代码语言:javascript
复制
[
	{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"},
		...
	]},
	...
]

转换函数

代码语言:javascript
复制
        _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];
            }
        }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年12月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档