第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

遞歸循環(huán)數(shù)組

遞歸循環(huán)數(shù)組

慕妹3146593 2018-10-17 15:30:41
上面是后端返回一個數(shù)組給我,要拼接成一個樹型菜單規(guī)則是看nodeLevel是幾級和parentId是在那個nodeId下的像上面老板parentId為0的規(guī)表示最高級黃經(jīng)理和張經(jīng)理的parentId為20則表示他是老板下面的因?yàn)槔习宓膎odeId為20不管有多少級以次這樣遞歸到最后一層展現(xiàn)成下面這樣一個結(jié)構(gòu),這種要怎么去遞歸??data: [    {        value: '老板'        children: [            {                value:'黃經(jīng)理',                    children: [                        {value: '黃經(jīng)理下屬主管'}                    ]            },            {                value:'張經(jīng)理',                    children: [                        {value: '張經(jīng)理下屬主管'}                    ]            },        ]    }]
查看完整描述

1 回答

?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個贊

大概寫了一下,應(yīng)該可以改改,有些特殊情況沒考慮吧


var value = [{

    "parentId": 0,

    "nodeId": 20,

    "nodeLevel": 1,

    "nodeName": "老板"

}, {

    "parentId": 20,

    "nodeId": 30,

    "nodeLevel": 2,

    "nodeName": "黃經(jīng)理"

}, {

    "parentId": 20,

    "nodeId": 32,

    "nodeLevel": 2,

    "nodeName": "張經(jīng)理"

}, {

    "parentId": 30,

    "nodeId": 37,

    "nodeLevel": 3,

    "nodeName": "黃經(jīng)理下屬主管"

}, {

    "parentId": 32,

    "nodeId": 56,

    "nodeLevel": 3,

    "nodeName": "張經(jīng)理下屬主管"

}];


var data = value.reduce(function(pre, cur) {

    pre = new Object(pre);

    cur = new Object(cur);

    return parse(pre, cur);

});


function parse(a, b) {

    if (a.parentId === b.nodeId) {

        if (b.children) {

            b.children.push(a);

        } else {

            b.children = [a];

        }

        return b;

    } else if (b.parentId === a.nodeId) {

        if (a.children) {

            a.children.push(b);

        } else {

            a.children = [b];

        }

        return a;

    } else {

        if (a.nodeLevel < b.nodeLevel && a.children) {

            for (let node of a.children) {

                let r = parse(node, b);

                if (r) {

                    a.children.map(v=>{

                        if (v.nodeId === r.nodeId) {

                            return r;

                        }

                        return v;

                    }

                    );

                }

            }

            return a;

        } else if (a.nodeLevel > b.nodeLevel && b.children) {

            for (let node of b.children) {

                let r = parse(node, a);

                if (r) {

                    b.children.map(v=>{

                        if (v.nodeId === r.nodeId) {

                            return r;

                        }

                        return v;

                    }

                    );

                }

            }

            return b;

        }

    }


}


function format(data) {

    if (!data) {

        return;

    }

    var r = {

        "value": data.nodeName

    };

    if (data.children) {

        r.children = [];

        for (let child of data.children) {

            r.children.push(format(child));

        }

    }

    return r;

}


data = format(data);


console.log(JSON.stringify(data));



查看完整回答
反對 回復(fù) 2018-11-18
  • 1 回答
  • 0 關(guān)注
  • 569 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號