layui树形结构更改

 1 /* 
 2 * 将json字符串更改为layui.tree所用的数据结构类型,输出仍然为json字符串
 3 * tanghao 7.29
 4 */
 5 
 6 function dataToTreeData(oData_str) {
 7 
 8 //将传递进来的json字符串转换成js对象
 9 var oData = JSON.parse(oData_str);
10 
11 //----------操作节点(父节点)元素获取----------
12 
13 //获取原始数据中操作要求的名称,去除重复,将其保存至目标数组
14 var operationIdArr = new Array();
15 
16 for(i in oData) {
17 //使用e来记录比较的情况
18 var e = 0;
19 //将本次原始数据中的元素与目标数组中的所有元素比较,只要出现相等的情况就改变e的值
20 for ( j in operationIdArr) {
21 if (oData[i].operationId == operationIdArr[j]) {
22 e++;
23 }
24 }
25 //如果e的值没有发生改变就说明没有相同的元素,那么执行插入操作
26 if( e == 0) {
27 operationIdArr.push(oData[i].operationId);
28 }
29 }
30 
31 //遍历操作节点数组
32 /* for(i in operationIdArr) {
33 console.log("父节点数组中的元素为" + operationIdArr[i]);
34 }*/
35 
36 //----------操作节点元素获取结束----------
37 
38 //两个节点的数据形式
39 var operationNodeArr = [];
40 
41 function operationNode(id, name, children) {
42 this.id = id;
43 this.name = name;
44 this.children = children;
45 }
46 
47 function fileNode(id, name, path, operationId) {
48 this.id = id;
49 this.name = name;
50 this.path = path;
51 this.operationId = operationId;
52 }
53 
54 //创建节点
55 for(i in operationIdArr) { 
56 var operationId = operationIdArr[i];
57 var operationName;
58 var fileNodeArr = [];
59 for(j in oData) {
60 if ( operationId == oData[j].operationId) {
61 //如果操作节点id相同,添加数据到文件节点
62 fileNodeArr.push(new fileNode(oData[j].id, oData[j].name, oData[j].path, oData[j].operationId)); 
63 operationName = oData[j].operationName;
64 }
65 }
66 //添加数据到操作节点
67 operationNodeArr.push(new operationNode(operationId, operationName, fileNodeArr));
68 }
69 
70 //返回json字符串
71 return JSON.stringify(operationNodeArr);
72 }

 

转载于:https://www.cnblogs.com/liufuyi/p/10686752.html

你可能感兴趣的:(layui树形结构更改)