您的位置:首页 > 其它

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

2016-12-13 07:20 183 查看
概述

在工作中,很多时候会遇到树组织,但是从数据库里面查询出来的结果是一个简单的树组织,这就需要将简单的树组织转换为标准的树组织,以便使用,本文分享一个简单的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 href="http://lib.csdn.net/base/dotnet" target=_blank>.NET/gisshixisheng

在线教程
http://edu.csdn href="http://lib.csdn.net/base/dotnet" target=_blank>.Net/course/detail/799
Github
https://github.com/lzugis/
联系方式

q q:1004740957

e-mail:niujp08@qq.com

公众号:lzugis15

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: