js 遞歸查找


https://www.v2ex.com/t/661182

let arr = [
    {
        "children": [
            {
                "pid": 1,
                "id": 2,
                "label": "技術",
                "value": 2
            },
            {
                "pid": 1,
                "id": 3,
                "label": "產品",
                "value": 3
            },
            {
                "children": [
                    {
                        "pid": 4,
                        "id": 26,
                        "label": "測試欄目 1",
                        "value": 26
                    }
                ],
                "pid": 1,
                "id": 4,
                "label": "項目",
                "value": 4
            },
            {
                "pid": 1,
                "id": 5,
                "label": "國際",
                "value": 5
            },
            {
                "pid": 1,
                "id": 24,
                "label": "研究",
                "value": 24
            },
            {
                "children": [
                    {
                        "pid": 7,
                        "id": 18,
                        "label": "行業",
                        "value": 18
                    },
                    {
                        "pid": 7,
                        "id": 19,
                        "label": "活動",
                        "value": 19
                    },
                    {
                        "pid": 7,
                        "id": 20,
                        "label": "新聞",
                        "value": 20
                    },
                    {
                        "pid": 7,
                        "id": 21,
                        "label": "資訊",
                        "value": 21
                    },
                    {
                        "pid": 7,
                        "id": 22,
                        "label": "新聞",
                        "value": 22
                    },
                    {
                        "pid": 7,
                        "id": 23,
                        "label": "知識",
                        "value": 23
                    },
                    {
                        "children": [
                            {
                                "children": [
                                    {
                                        "pid": 11,
                                        "id": 12,
                                        "label": "欄目 4",
                                        "value": 12
                                    }
                                ],
                                "pid": 9,
                                "id": 11,
                                "label": "欄目 3",
                                "value": 11
                            }
                        ],
                        "pid": 7,
                        "id": 9,
                        "label": "幫助中心",
                        "value": 9
                    }
                ],
                "pid": 1,
                "id": 7,
                "label": "新聞資訊",
                "value": 7
            },
            {
                "children": [
                    {
                        "pid": 8,
                        "id": 13,
                        "label": "簡介",
                        "value": 13
                    },
                    {
                        "pid": 8,
                        "id": 14,
                        "label": "榮譽",
                        "value": 14
                    },
                    {
                        "pid": 8,
                        "id": 15,
                        "label": "關懷",
                        "value": 15
                    },
                    {
                        "pid": 8,
                        "id": 16,
                        "label": "我們",
                        "value": 16
                    }
                ],
                "pid": 1,
                "id": 8,
                "label": "我們",
                "value": 8
            },
            {
                "pid": 1,
                "id": 17,
                "label": "公告",
                "value": 17
            },
            {
                "pid": 1,
                "id": 6,
                "label": "展示",
                "value": 6
            }
        ],
        "pid": 0,
        "id": 1,
        "label": "主目錄",
        "value": 1
    }
]

function find(arr, id) {
    if (arr == null) return null;
    for (let obj of arr) {
        if (obj.id == id) {
            return collect(obj);
        }
        let ret = find(obj.children, id);
        if (ret) return ret;
    }
    return null;
}

function collect(obj) {
    let ret = [obj.id];
    if (obj.children) {
        for (let o of obj.children) {
            ret = [...ret, ...collect(o)]
        }
    }
    return ret;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM