亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何獲取樹結構的每個節點的值

如何獲取樹結構的每個節點的值

肥皂起泡泡 2021-12-02 15:13:51
一個嵌套數組和對象的數組,每個節點都有一個唯一的值,在這個數據上找一個值,如何獲取每個節點上的值?const opts = [    {        value: '01',        children: [            { value: '0198' },            { value: '0195', children: [{ value: '09977' }] }        ]    },    {        value: '02',        children: [            { value: '01986' },            {                value: '0195',                children: [                    { value: '09978', children: [{ value: '09864' }, { value: '90876' }] }                ]            }        ]    }];const code = '90876';// expected get an array ['02','0195','09978','90876']
查看完整描述

3 回答

?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

你可以使用一個函數來遞歸遍歷對象結構,就像這里描述的那樣:


const opts = [

    {

        value: '01',

        children: [

            { value: '0198' },

            { value: '0195', children: [{ value: '09977' }] }

        ]

    },

    {

        value: '02',

        children: [

            { value: '01986' },

            {

                value: '0195',

                children: [

                    { value: '09978', children: [{ value: '09864' }, { value: '90876' }] }

                ]

            }

        ]

    }

];



function eachRecursive(obj, cb) {

    for (var k in obj) {

        if (typeof obj[k] == "object" && obj[k] !== null)

            eachRecursive(obj[k], cb);

        else

            cb(obj[k]);

    }

}


let results = [];


eachRecursive(opts, val => results.push(val));

console.log(results);


但不確定你的評論是什么意思:// expected get an array ['02','0195','0997','90876']你能解釋一下你為什么期望嗎?


查看完整回答
反對 回復 2021-12-02
?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

你可以使用dfs算法


function dfs(o, target){

    if(o.value == target) return [target];

    if(!o.children) return false;

    let path;

    o.children.find(x=>path=dfs(x, target));

    if(path){

        return [o.value].concat(path);

    }

};


const opts = [

    {

        value: '01',

        children: [

            { value: '0198' },

            { value: '0195', children: [{ value: '09977' }] }

        ]

    },

    {

        value: '02',

        children: [

            { value: '01986' },

            {

                value: '0195',

                children: [

                    { value: '09978', children: [{ value: '09864' }, { value: '90876' }] }

                ]

            }

        ]

    }

];


let path;

opts.find(x=>path=dfs(x, '90876'))

console.log(path);


查看完整回答
反對 回復 2021-12-02
?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

const opts = [

    {

        value: '01',

        children: [

            { value: '0198' },

            { value: '0195', children: [{ value: '09977' }] }

        ]

    },

    {

        value: '02',

        children: [

            { value: '01986' },

            {

                value: '0195',

                children: [

                    { value: '09978', children: [{ value: '09864' }, { value: '90876' }] }

                ]

            }

        ]

    }

];

console.log(opts[1].value)

console.log(opts[1].children[1].value)

console.log(opts[1].children[1].children[0].value)

console.log(opts[1].children[1].children[0].children[1].value)


查看完整回答
反對 回復 2021-12-02
  • 3 回答
  • 0 關注
  • 208 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號