摘要:多叉樹的分析及實現好了,終于回到了第一篇文章提到的組織結構的多叉樹實現,有了前兩篇文章的基礎,多叉樹的實現也就變得簡單了從后臺拿到的原始數據形式為總部工程部工程部工程部工程部測試部測試部測試部生產部規劃部市場部這是一個典型的多叉樹結構,總部
js多叉樹的分析及實現
好了,終于回到了第一篇文章提到的組織結構的多叉樹實現,有了前兩篇文章的基礎,多叉樹的實現也就變得簡單了
從后臺拿到的原始數據形式為
const data = [ {"orgId":1,"orgName":"總部","parentId":0}, {"orgId":6,"orgName":"工程部","parentId":1}, {"orgId":7,"orgName":"工程部1","parentId":6}, {"orgId":8,"orgName":"工程部2","parentId":7}, {"orgId":9,"orgName":"工程部3","parentId":8}, {"orgId":10,"orgName":"測試部","parentId":1}, {"orgId":11,"orgName":"測試部1","parentId":10}, {"orgId":12,"orgName":"測試部2","parentId":11}, {"orgId":13,"orgName":"生產部","parentId":1}, {"orgId":14,"orgName":"規劃部","parentId":1}, {"orgId":15,"orgName":"市場部","parentId":1}, ];
這是一個典型的多叉樹結構,總部直接下級單位有工程部,測試部,生產部,規劃部,市場部;其中工程部和測試部又有下級部門...
要求轉換成的數據格式是
const json={ 總部 : { 工程部 : { 工程部1 : { 工程部1 : { }, }, }, 測試部 : { 測試部1 : { }, 測試部2 : { } }, 銷售部 : { 銷售部1 : { }, 銷售部2 : { } }, 售后部 : { } } };
需要的數據形式為json嵌套對象,而且每個對象只保留屬性名,所以分兩步進行操作
1.利用原始數據生成組織機構列表樹,利用遞歸判斷id并生成多叉樹
2.在第一步生成多叉樹的過程中同時生成所需對象,使之符合需要的數據形式
代碼如下
function MT(){ var OBJ={}; var CURRENT; var TEM; this.root=null; this.Node=function(e){ this.orgId=e.orgId; this.orgName=e.orgName; this.parentId=e.parentId; this.children=[]; } this.insert=function(e){ CURRENT=OBJ; function recursiveAdd(tem,e){ if(tem.orgId==e.parentId){ tem.children.push(e); CURRENT=CURRENT[tem.orgName]; CURRENT[e.orgName]={}; }else{ for(var i=0;i需要注意的幾點:
生成樹結構首先找出根節點,并遞歸添加其他子節點
代碼中的CURRENT=CURRENT[tem.orgName],CURRENT[e.orgName]={};用來生成嵌套對象,這里涉及數據類型的指向,請看以下示例代碼
var Ele = {}; function nested(element){ element["key"] = {}; element = element["key"]; element["key1"] = {}; element = element["key1"]; } nested(Ele); console.log(Ele);以上,給有需要的朋友,也為自己做一個記錄^ ^
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81404.html
摘要:二叉樹的層級遍歷創建一個二叉樹輸出函數先訪問左子樹,再訪問自身,再訪問右子樹先訪問自身,再訪問左子樹,再訪問右子樹先訪問左子樹,再訪問右子樹再訪問自身層級遍歷多叉樹的層級遍歷創建一個多叉樹輸出函數遞歸遍歷每個節點方法方法方法層級遍歷每 1、二叉樹的層級遍歷 創建一個二叉樹 class Binary{ constructor(data,left,right){ this.data...
摘要:經過分析和思考,我決定不采用遞歸的方式來編寫樹形數據的處理,最終選用來維護樹節點之間的關系。以權限樹為例,做一個樹形數據工具類的設計。 1.簡介 ? 在一些管理系統中一般都會用到,會用到一些樹形數據,例如部門組織以及權限等數據,都得生成樹形數據,需要寫一些樹形數據生成工具,一般使用遞歸的方式,性能低下還可能會導致爆棧。經過分析和思考,我決定不采用遞歸的方式來編寫樹形數據的處理,最...
閱讀 954·2019-08-30 15:55
閱讀 550·2019-08-26 13:56
閱讀 2079·2019-08-26 12:23
閱讀 3295·2019-08-26 10:29
閱讀 600·2019-08-26 10:17
閱讀 2868·2019-08-23 16:53
閱讀 697·2019-08-23 15:55
閱讀 2813·2019-08-23 14:25