成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js多叉樹的分析及實(shí)現(xiàn)

lucas / 1071人閱讀

摘要:多叉樹的分析及實(shí)現(xiàn)好了,終于回到了第一篇文章提到的組織結(jié)構(gòu)的多叉樹實(shí)現(xiàn),有了前兩篇文章的基礎(chǔ),多叉樹的實(shí)現(xiàn)也就變得簡(jiǎn)單了從后臺(tái)拿到的原始數(shù)據(jù)形式為總部工程部工程部工程部工程部測(cè)試部測(cè)試部測(cè)試部生產(chǎn)部規(guī)劃部市場(chǎng)部這是一個(gè)典型的多叉樹結(jié)構(gòu),總部

js多叉樹的分析及實(shí)現(xiàn)

好了,終于回到了第一篇文章提到的組織結(jié)構(gòu)的多叉樹實(shí)現(xiàn),有了前兩篇文章的基礎(chǔ),多叉樹的實(shí)現(xiàn)也就變得簡(jiǎn)單了

從后臺(tái)拿到的原始數(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":"測(cè)試部","parentId":1},
  {"orgId":11,"orgName":"測(cè)試部1","parentId":10},
  {"orgId":12,"orgName":"測(cè)試部2","parentId":11},
  {"orgId":13,"orgName":"生產(chǎn)部","parentId":1},
  {"orgId":14,"orgName":"規(guī)劃部","parentId":1},
  {"orgId":15,"orgName":"市場(chǎng)部","parentId":1},
];

這是一個(gè)典型的多叉樹結(jié)構(gòu),總部直接下級(jí)單位有工程部,測(cè)試部,生產(chǎn)部,規(guī)劃部市場(chǎng)部;其中工程部測(cè)試部又有下級(jí)部門...

要求轉(zhuǎn)換成的數(shù)據(jù)格式是

const json={
  總部 : {
    工程部 : {
      工程部1 : {
        工程部1 : {
        },
      },
    },
    測(cè)試部 : {
      測(cè)試部1 : {
      },
      測(cè)試部2 : {
      }
    },
    銷售部 : {
      銷售部1 : {
      },
      銷售部2 : {
      }
    },
    售后部 : {
    }
  }
};

需要的數(shù)據(jù)形式為json嵌套對(duì)象,而且每個(gè)對(duì)象只保留屬性名,所以分兩步進(jìn)行操作

1.利用原始數(shù)據(jù)生成組織機(jī)構(gòu)列表樹,利用遞歸判斷id并生成多叉樹

2.在第一步生成多叉樹的過(guò)程中同時(shí)生成所需對(duì)象,使之符合需要的數(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

需要注意的幾點(diǎn):

生成樹結(jié)構(gòu)首先找出根節(jié)點(diǎn),并遞歸添加其他子節(jié)點(diǎn)

代碼中的CURRENT=CURRENT[tem.orgName],CURRENT[e.orgName]={};用來(lái)生成嵌套對(duì)象,這里涉及數(shù)據(jù)類型的指向,請(qǐng)看以下示例代碼

var Ele = {};
function nested(element){
  element["key"] = {};
  element = element["key"];

  element["key1"] = {};
  element = element["key1"];

}
nested(Ele);
console.log(Ele);

以上,給有需要的朋友,也為自己做一個(gè)記錄^ ^

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/81404.html

相關(guān)文章

  • 叉樹全路徑遍歷

    摘要:前言本文研究的是如何對(duì)一個(gè)多叉樹進(jìn)行全路徑的遍歷,并輸出全路徑結(jié)果。問(wèn)題構(gòu)建現(xiàn)在存在一個(gè)多叉樹,其結(jié)點(diǎn)情況如下圖,需要給出方法將葉子節(jié)點(diǎn)的所有路徑進(jìn)行輸出。 多叉樹全路徑遍歷 本文為原創(chuàng)作品,首發(fā)于微信公眾號(hào):【坂本先生】,如需轉(zhuǎn)載請(qǐng)?jiān)谖氖酌黠@位置標(biāo)明轉(zhuǎn)載于微信公眾號(hào):【坂本先生】,否則追究其法律責(zé)任。 前言 本文研究的是如何對(duì)一個(gè)多叉樹進(jìn)行全路徑的遍歷,并輸出全路徑結(jié)果。該問(wèn)題的研究...

    MartinHan 評(píng)論0 收藏0
  • js遍歷二叉樹叉樹結(jié)構(gòu)

    摘要:二叉樹的層級(jí)遍歷創(chuàng)建一個(gè)二叉樹輸出函數(shù)先訪問(wèn)左子樹,再訪問(wèn)自身,再訪問(wèn)右子樹先訪問(wèn)自身,再訪問(wèn)左子樹,再訪問(wèn)右子樹先訪問(wèn)左子樹,再訪問(wèn)右子樹再訪問(wèn)自身層級(jí)遍歷多叉樹的層級(jí)遍歷創(chuàng)建一個(gè)多叉樹輸出函數(shù)遞歸遍歷每個(gè)節(jié)點(diǎn)方法方法方法層級(jí)遍歷每 1、二叉樹的層級(jí)遍歷 創(chuàng)建一個(gè)二叉樹 class Binary{ constructor(data,left,right){ this.data...

    junbaor 評(píng)論0 收藏0
  • 項(xiàng)目中用到的樹形數(shù)據(jù)

    摘要:經(jīng)過(guò)分析和思考,我決定不采用遞歸的方式來(lái)編寫樹形數(shù)據(jù)的處理,最終選用來(lái)維護(hù)樹節(jié)點(diǎn)之間的關(guān)系。以權(quán)限樹為例,做一個(gè)樹形數(shù)據(jù)工具類的設(shè)計(jì)。 1.簡(jiǎn)介 ? 在一些管理系統(tǒng)中一般都會(huì)用到,會(huì)用到一些樹形數(shù)據(jù),例如部門組織以及權(quán)限等數(shù)據(jù),都得生成樹形數(shù)據(jù),需要寫一些樹形數(shù)據(jù)生成工具,一般使用遞歸的方式,性能低下還可能會(huì)導(dǎo)致爆棧。經(jīng)過(guò)分析和思考,我決定不采用遞歸的方式來(lái)編寫樹形數(shù)據(jù)的處理,最...

    douzifly 評(píng)論0 收藏0
  • 其外部存儲(chǔ)

    摘要:切記,紅黑樹在旋轉(zhuǎn)和顏色變換的過(guò)程中,必須遵守紅黑樹的幾條規(guī)則。樹的外部存儲(chǔ)磁盤布局計(jì)算機(jī)中的機(jī)械磁盤是由磁頭和圓盤組成,每個(gè)圓盤上劃分為多個(gè)磁道,每個(gè)磁道又劃分為多個(gè)扇區(qū)。 術(shù)語(yǔ) showImg(https://segmentfault.com/img/bVbai3r?w=643&h=407); 根 ????樹最頂端的節(jié)點(diǎn)稱為根,一棵樹只有一個(gè)根 父節(jié)點(diǎn) ????每個(gè)節(jié)...

    _Dreams 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

lucas

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<