国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js多叉樹的分析及實現

lucas / 1063人閱讀

摘要:多叉樹的分析及實現好了,終于回到了第一篇文章提到的組織結構的多叉樹實現,有了前兩篇文章的基礎,多叉樹的實現也就變得簡單了從后臺拿到的原始數據形式為總部工程部工程部工程部工程部測試部測試部測試部生產部規劃部市場部這是一個典型的多叉樹結構,總部

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

相關文章

  • 叉樹全路徑遍歷

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

    MartinHan 評論0 收藏0
  • js遍歷二叉樹叉樹結構

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

    junbaor 評論0 收藏0
  • 項目中用到的樹形數據

    摘要:經過分析和思考,我決定不采用遞歸的方式來編寫樹形數據的處理,最終選用來維護樹節點之間的關系。以權限樹為例,做一個樹形數據工具類的設計。 1.簡介 ? 在一些管理系統中一般都會用到,會用到一些樹形數據,例如部門組織以及權限等數據,都得生成樹形數據,需要寫一些樹形數據生成工具,一般使用遞歸的方式,性能低下還可能會導致爆棧。經過分析和思考,我決定不采用遞歸的方式來編寫樹形數據的處理,最...

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

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

    _Dreams 評論0 收藏0

發表評論

0條評論

lucas

|高級講師

TA的文章

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