遞歸遍歷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,
      });
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM