zoukankan      html  css  js  c++  java
  • 递归遍历ztree树形结构并只获取最后一级child的id和name组成新数组

    //handleTreeCheck是选中的节点
    //treeNode是节点上的数据,是个对象
    //treeNode.childMenuList是节点上的子节点,是个数组
    function handleTreeCheck(el, a, treeNode) {
          if (treeNode.checked) { //如果节点选中
          //如果是最后一级节点数据,直接将数据推进authTableData中
            if (treeNode.check_Child_State === -1) {
              authTableData.push({
                username: treeNode.name,
                userid: treeNode.id,
              });
            } else {
            //调用该函数并传递子节点数据
              calleArr(treeNode.childMenuList);
              function calleArr(array) {
              //遍历子节点上的数据
                for (i in array) {
                  var data = array[i]; //得到每个节点
                  //如果该节点上有childMenuList,说明有子节点
                  if (data.childMenuList) {
                  //将子节点传入该函数作为新参数再调一次
                  //如果需将每个子节点都组成新数组,写在此处,这里只需要最后一级数据,所以不写
                    calleArr(data.childMenuList); 
                  } else {
                  //此处找到最里层的childMenuList数据,可以操作了
                    authTableData.push({
                      username: data.name,
                      userid: data.id,
                    });
                  }
                }
              }
            }
          //如果没有被选中,需将authTableData中的数据过滤掉,道理同上
          } else {
            if (treeNode.check_Child_State === -1) {
              authTableData = authTableData.filter(function (items) {
                return items.userid !== treeNode.id;
              });
            } else {
              calleArr1(treeNode.childMenuList);
              function calleArr1(array) {
                for (i in array) {
                  var data = array[i];
                  if (data.childMenuList) {
                    calleArr1(data.childMenuList); //自己调用自己
                  } else {
                    authTableData = authTableData.filter(function (items) {
                      return items.userid !== data.id;
                    });
                  }
                }
              }
            }
          }
    	//将数据填充到表格中
          table.reload("auth_table", {
            data: authTableData,
          });
        }
    
  • 相关阅读:
    Swing程序最佳架构设计—以业务对象为中心的MVC模式(转)
    股市投资策略总结(转)
    php学习笔记--高级教程--读取文件、创建文件、写入文件
    史上最简单的Hibernate入门简单介绍
    Java中StringBuilder的清空方法比較
    DHCP Option 60 的理解
    ICMP报文分析
    软件測试自学指南---从入门到精通
    Qt多线程学习:创建多线程
    Bulk Insert命令具体
  • 原文地址:https://www.cnblogs.com/33shan/p/15019181.html
Copyright © 2011-2022 走看看