layui树形结构更改
Posted liufuyi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }
以上是关于layui树形结构更改的主要内容,如果未能解决你的问题,请参考以下文章