JavaScript 将行结构数据转化为树结构数据源(高效转化方案)
js接收到后台的数据如下
/// 部门信息
var departRows = [{
parentDepartId: 'root',
departId: 'DC',
departName: '集团'
}, {
parentDepartId: 'DC',
departId: '01',
departName: '上海本部'
}, {
parentDepartId: 'DC',
departId: '02',
departName: '中华企业'
}, {
parentDepartId: '02',
departId: '0200',
departName: '中华企业股份有限公司本部'
}, {
parentDepartId: '02',
departId: '0201',
departName: '上海古北(集团)有限公司'
}, {
parentDepartId: '0201',
departId: '020100',
departName: '上海古北(集团)有限公司本部'
}, {
parentDepartId: '0201',
departId: '020101',
departName: '上海古北顾村置业有限公司'
}, {
parentDepartId: '0201',
departId: '020102',
departName: '上海古北京宸置业发展有限公司'
}, {
parentDepartId: '0201',
departId: '020103',
departName: '苏州洞庭房地产发展有限公司'
}];
把行数据转化成树形结构数据源
/// <summary>
/// 行结构数据转化为树形结构数据
/// </summary>
/// <param name="rows">行结构数据</param>
/// <param name="attributes">属性信息</param>
function convertTreeData(rows, attributes) {
var keyNodes = {}, parentKeyNodes = {};
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
row.id = row[attributes.keyField];
row.parentId = row[attributes.parentKeyField];
row.text = row[attributes.textField];
row.children = []; keyNodes[row.id] = row; if (parentKeyNodes[row.parentId]) { parentKeyNodes[row.parentId].push(row); }
else { parentKeyNodes[row.parentId] = [row]; } var children = parentKeyNodes[row.id];
if (children) { row.children = children; } var pNode = keyNodes[row.parentId];
if (pNode) { pNode.children.push(row); }
}
return parentKeyNodes[attributes.rootParentId];
}
上边方法只使用了一个循环,没有递归、嵌套循环,转化效率相对来说还是比较高效的
使用方法
// 属性配置信息
var attributes = {
// key对应字段
keyField: 'departId',
// 上级key对应字段
parentKeyField: 'parentDepartId',
// 文本对应字段
textField: 'departName',
// 根节点上级key对应的值
rootKey: 'root'
} var treeData = convertTreeData(departRows, attributes); // easyui直接解析treeData
$('#testTree').tree({
data: treeData
});
JavaScript 将行结构数据转化为树结构数据源(高效转化方案)的更多相关文章
- JavaScript 将行结构数据转化为树形结构,可提供给常用的tree插件直接使用(高效转化方案)
前台接收到的数据格式 var rows=[{ parent: 'root', id: 'DC', title: '集团' }, { parent: 'DC', id: '01', title: '上海 ...
- JavaScript Table行定位效果
作者:cloudgamer 时间: 2009-09-17 文档类型:原创 来自:蓝色理想 第 1 页 JavaScript Table行定位效果 [1] 第 2 页 JavaScript Table行 ...
- [转载]Selenium実行中にJavaScriptのコードを実行する
Selenium実行中にJavaScriptのコードを実行する JavaScriptで画面の値を取得/設定するコードをメモ. WebDriverEx.cs // JavaScriptを実行(戻り値なし ...
- 痞子衡嵌入式:RT-MFB - 一种灵活的i.MXRT下多串行NOR Flash型号选择的量产方案
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是一种灵活的i.MXRT下多串行NOR Flash型号选择的量产方案. 对于以 i.MXRT 这类没有内部 NVM (Non-Volati ...
- javascript 多行字符串
javascript 字符串多行 平时一般使用 字符串+,或者[].join('')的方式 同事推荐了这样的形式 ExceptionDivHtml="<div class='gameI ...
- JavaScript如何把字符串中每个单词首字母转化为大写
先上代码,再做解释. 思路分析: 1. 首先先把字符串中的单词转化为小写(toLowerCase),再对其进行截取(split),截取依据为按照空格截取: 2. 此时经过步骤一之后得到的东西是一个数组 ...
- javascript——选择行之后才可以进行控制操作
- javascript 60行编写的俄罗斯方块游戏
转自 http://***/share/1759652641295360.htm <!doctype html><html><head></head>& ...
- spring 多数据源一致性事务方案
spring 多数据源配置 spring 多数据源配置一般有两种方案: 1.在spring项目启动的时候直接配置两个不同的数据源,不同的sessionFactory.在dao 层根据不同业务自行选择使 ...
随机推荐
- const和volatile
const是只读变量 const修饰的变量是只读的,其本质还是变量 const修饰的局部变量在栈上分配空间 const修饰的全局变量在全局数据区分配空间 const只在编译期有用,在运行期无用 con ...
- Oracle创建用户及权限设置
oracle用户创建及权限设置 权限: create session create table unlimited tablespace connect resource dba 例: #sqlplu ...
- java操作Excel、PDF文件
java操作Excel.PDF文件 分享者:Vashon 分享来源:CSDN博客 下面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是贴出了关于操作EXCEL的代码: jxl是一个*国人写的 ...
- 下载JSTL方法
第一步:访问 http://www.apache.org/dist/ 第二步:点击jakarta
- laravel如何查找门脸及注入类方法
门脸模式 通过 config/app.php 查看别名对应类名 Illuminate\Support\Facades\Log ,查看 LoggerInterface 类文件,得:命名空间+接口名 Ps ...
- 【转载】SQL Server 2012 日志传送
SQL Server 2012 日志传送 一.准备: 数据库为完全恢复模式,并事先做一次完全备份. 共享一个文件夹,主机备份放在这个文件夹,而且客户机有权访问这个共享文件夹. 二.基本配置 1.启动配 ...
- CNN完成mnist数据集手写数字识别
# coding: utf-8 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data d ...
- MATLAB读取每个文件夹下的badcsv文件后合并为总的badexcel文件
clear; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取子文件夹中bad.csv数据%并把所有数据写到一个excel文件中%%%%%%%%%%%%%%%%%% ...
- idea集成 MyBatis Generator 插件,自动生成dao,model,sql map文件
1.集成到开发环境中 以maven管理的功能来举例,只需要将插件添加到pom.xml文件中即可.(注意此处是以plugin的方式,放在<plugins></plugins>中间 ...
- perl学习之:package and module
perl的包(package)和模块(PM) ==================================包package=========================== pac ...