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

資訊專欄INFORMATION COLUMN

js “指針”:數(shù)組轉(zhuǎn)樹

mikyou / 541人閱讀

摘要:當變量指向一個對象的時候,實際指向的是存儲地址測試結(jié)果數(shù)組轉(zhuǎn)樹的方式節(jié)點節(jié)點節(jié)點節(jié)點節(jié)點節(jié)點節(jié)點節(jié)點將作為鍵值方便二次遍歷做索引為的是根節(jié)點這樣只要遍歷倆次第一次遍歷將數(shù)組轉(zhuǎn)節(jié)點對象,存儲到新的對象里,為鍵值方便索引第二次遍歷根據(jù)索引插入子

當變量指向一個對象的時候,實際指向的是存儲地址
測試:

    a = {val: 123}
    b = a
    b.val = 321
    console.log(a)
    // 結(jié)果:{val: 321}

數(shù)組轉(zhuǎn)樹的方式:

    arr = [
        {id: 1, name: "節(jié)點1", pid: 0},
        {id: 2, name: "節(jié)點2", pid: 1},
        {id: 3, name: "節(jié)點3", pid: 1},
        {id: 4, name: "節(jié)點4", pid: 2},
        {id: 5, name: "節(jié)點5", pid: 1},
        {id: 6, name: "節(jié)點6", pid: 3},
        {id: 7, name: "節(jié)點7", pid: 4},
        {id: 8, name: "節(jié)點8", pid: 2}
    ];
    function node(d){
        return {
            name: d.name,
            id: d.id,
            pid: d.pid,
            children: []
        }
    }
    function tree(arr){
        var narr = {};
        for (var i in arr) { // 將id作為鍵值方便二次遍歷做索引
            narr[arr[i].id] = node(arr[i]);
        }
        for (var j in narr) {
            if(typeof narr[narr[j].pid] != "undefined"){
                narr[narr[j].pid].children.push(narr[j])
            }
        }
        return narr[1]  // id為1的是根節(jié)點
    }
    console.log(tree(arr))

這樣只要遍歷倆次
第一次遍歷將數(shù)組轉(zhuǎn)節(jié)點對象,存儲到新的對象里,id為鍵值方便索引
第二次遍歷根據(jù)索引插入子節(jié)點

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

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

相關(guān)文章

  • 列表轉(zhuǎn)樹的實現(xiàn)思路與代碼

    摘要:執(zhí)行步驟遍歷每一個列表項,對比該項與列表內(nèi)所有項的,根據(jù)對比結(jié)果做后續(xù)處理如果該項與列表中某項相等,那么把作為的孩子。這里應(yīng)該還有可優(yōu)化的地方,歡迎大家提供更多更好的思路,懇請在補充新的方案時,先把思路說清楚,切勿直接扔代碼上來。 背景 在前端開發(fā)中,有一種組件是每個前端都繞不過去的,樹組件。在業(yè)務(wù)中像目錄結(jié)構(gòu)、組織架構(gòu)、行政區(qū)域劃分這些都是典型的樹組件使用場景。一般來說,前端也就是拿...

    starsfun 評論0 收藏0
  • 輕松實現(xiàn)可擴展的樹形表格

    摘要:由于目前還未開發(fā)樹形表格組件,也參閱了網(wǎng)絡(luò)上部分基于表格封裝的開源樹形組件,都沒有找的太理想可進行二次開發(fā)的開源項目,所以就萌生了自行開發(fā)樹形表格。 由于ElementUI目前還未開發(fā)樹形表格組件,也參閱了網(wǎng)絡(luò)上部分基于ElementUI表格封裝的開源樹形組件,都沒有找的太理想可進行二次開發(fā)的開源項目,所以就萌生了自行開發(fā)樹形表格。 本示例提供開發(fā)思路,移除了多余的樣式,比較適合新手入...

    harryhappy 評論0 收藏0
  • 樹轉(zhuǎn)列表的實現(xiàn)思路與代碼

    摘要:背景之前寫了一篇列表轉(zhuǎn)樹的文章,有列表轉(zhuǎn)樹的需求自然就會有樹轉(zhuǎn)列表的需求,這里我把樹轉(zhuǎn)列表的思路與代碼再整理一下??偨Y(jié)樹轉(zhuǎn)列表過程中,我這里的深度優(yōu)先采用了遞歸方式,可能會對內(nèi)存占用較多,使用時請自行權(quán)衡。 背景 之前寫了一篇列表轉(zhuǎn)樹的文章,有列表轉(zhuǎn)樹的需求自然就會有樹轉(zhuǎn)列表的需求,這里我把樹轉(zhuǎn)列表的思路與代碼再整理一下。 思路分析 需求是什么?老規(guī)矩,上圖showImg(https:...

    denson 評論0 收藏0
  • javascript遞歸

    摘要:調(diào)用自身的函數(shù)稱為遞歸函數(shù)缺點遞歸占用的內(nèi)存和資源比較多,同時難以實現(xiàn)和維護。優(yōu)點在處理之類的樹形結(jié)構(gòu)數(shù)據(jù)時,非常適合用遞歸。案例數(shù)字的階乘通過乘以進行計算獲取存在某個字段的節(jié)點某個數(shù)或者遞歸實現(xiàn)數(shù)組轉(zhuǎn)樹結(jié)構(gòu)調(diào)用 調(diào)用自身的函數(shù)稱為遞歸函數(shù) 缺點:遞歸占用的內(nèi)存和資源比較多,同時難以實現(xiàn)和維護。 優(yōu)點:在處理DOM之類的樹形結(jié)構(gòu)數(shù)據(jù)時,非常適合用遞歸。 案例 數(shù)字 n 的階乘通過乘...

    terro 評論0 收藏0
  • PHP: array數(shù)組常用API

    摘要:語法數(shù)組刪除數(shù)組的最后一項語法數(shù)組在數(shù)組的最末添加一項語法數(shù)組刪除數(shù)組的首項語法數(shù)組在數(shù)組的首部添加一項案例分析 1:數(shù)組的指針操作: 語法:current(數(shù)組) 當前指針指向的單元值(默認是第零個)語法 next(數(shù)組) 當前指針往下移動一幀語法 prev(數(shù)組) 當前指針往前移動一個指針語法 end(array) 將當前指針移動到最后一項語法 ...

    Cheriselalala 評論0 收藏0

發(fā)表評論

0條評論

mikyou

|高級講師

TA的文章

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