搜尋

首頁  >  問答  >  主體

javascript - 從介面取得到四層樹狀數據,需要一個方法來匹配其中任一層的任一條。

可能比較繞,具體是這樣的,從介面收到了一個數據,結構大概是這樣:

[
    {
        id: '1',
        name: '',
        child: [
            {id: '5',
                name: 'aaa',
                child: [
                    {
                        id: '1',
                        name: 'aaa',
                        child: [
                            {
                                id: '1',
                                name: 'aaa',
                                child: [
                                    
                                ]
                            }
                        ]
                    }
                ]
            }
        ]    
    },
    {
        id: '2',
        name: '',
        child: [
            
        ]
    }
]

每一層的每一條數據都有獨立id,然後有child欄位對應第二層數據,第二層數據也有child欄位對應第三層數據等等…

請問有沒有高效率一點的方法,透過一個指定id,從這個樹狀資料中取得相對應的name?求個封裝函數

PHP中文网PHP中文网2739 天前419

全部回覆(2)我來回復

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-19 10:13:14

    根據你要求和提供的資料樣本,寫了個demo,不知道符不符合你的要求。 透過一個指定id,傳回目前物件

        var data = 你的数据样本;
        var Result;
        function demo( data, id ) {
            for (var i = 0; i < data.length; i++) {
                if ( data[ i ].id == id ) {
                    Result = data[ i ];
                    break;
                }else if ( data[ i ].child.length && !Result ) {
                    demo( data[ i ].child, id );
                };
            };
            return Result;
        }
        console.log(demo( data, 3 ));

    運行結果
    註:demo( data, id ) 中的 id 必須是唯一的

    回覆
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:13:14

    正道: 遞迴;
    歪道: 物件 JSON.Stringify 以後,用正規匹配 "id":"xx" 後,取得第一個 "name:" 和 ","之間的字串

    回覆
    0
  • 取消回覆