亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

lucas / 1115人閱讀

摘要:多叉樹的分析及實現(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

相關(guān)文章

  • 叉樹全路徑遍歷

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

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

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

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

    摘要:經(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ù)的處理,最...

    douzifly 評論0 收藏0
  • 其外部存儲

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

    _Dreams 評論0 收藏0

發(fā)表評論

0條評論

lucas

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<