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