js遍歷樹形結構並返回所有的子節點id值


場景

很多時候我么需要返回返回tree結構下的所有自己節點
很顯然這個時候需要遍歷了
廢話不多說
直接遞歸遍歷

數據結構

var treeData = [{
        id: 111,
        title: "機構1",
        children: [{
                id: 123,
                title: "機構1",
            },
            {
                id: 11123,
                title: "機構1231",
                children: [{
                    id: 111211231233,
                    title: "機構1231",
                }]
            },
            {
                id: 11121212123,
                title: "機構11111231",
            }
        ]
    },
    {
        id: 1112111113,
        title: "機構1211131",
        children: [{
            id: 1110000211231233,
            title: "機構12300001",
        }]
    },
    {
        id: 110001112113,
        title: "機構1211000111211331",
        children: [{
            id: 11100999911231233,
            title: "機構100002300001",
            children: [{
                id: 100,
                title: "機構l",
            }]
        }]
    },
    {
        id: 9999,
        title: "部門11",
        children: [{
            id: 000233,
            title: "部門31",
            children: [{
                id: 110,
                title: "機2構l",
            }]
        }]
    },
]

我的思路

首先肯定是需要進行循環的,我使用的是for of循環
假設tree數據是一個[{},{}]這樣類型的
那么直接將id值push進去就可以了
如果{}中有children這個字段的話
我們需要判斷是否有children並且長度是否大於0
if (item.children && item.children.length)
如果有的話
我們需要自己調用自己並且需要傳遞參數給自己
第一個參數肯定被遍歷的值;也就是 item.children
第二個參數是arr,用來需要返回的所有id值

返回所有的id值

function lookForAllId(data = [], arr = []) {
    for (let item of data) {
        arr.push(item.id)
        if (item.children && item.children.length) lookForAllId(item.children, arr)
    }
    return arr
}
console.log(lookForAllId(treeData));

還有沒有更優秀的寫法

明天繼續寫


免責聲明!

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



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