js遞歸生成樹形結構


先看結果

結果

[
    {
        "id": 1,
        "title": "張三",
        "parent_id": -1,
        "childs": [
            {
                "id": 2,
                "title": "張小二",
                "parent_id": 1,
                "childs": [
                    {
                        "id": 3,
                        "title": "張小三",
                        "parent_id": 2,
                        "childs": []
                    }
                ]
            }
        ]
    }
]
再看代碼

方法

/**
 * 生成tree
 * @param parent_id 父id
 */
const initTree = (parent_id) => {
    // jsonArray 變量數據
    // 第一次以后:根據id去查詢parent_id相同的(相同為子數據)
    // 第一次:查找所有parent_id為-1的數據組成第一級
    const child = jsonArray.filter(item => item.parent_id == parent_id)
    // 第一次:循環parent_id為-1數組
    return child.map(item => ({
        ...item,
        // 當前存在id(id與parent_id應該是必須有的)調用initTree() 查找所有parent_id為本id的數據
        // childs字段寫入
        childs: initTree(item.id)
    }))
}
// 首先調用initTree方法查找所有parent_id為-1的(-1認為是第一級)
const tree = initTree(-1)
console.log(tree)

jsonArray 源數據

[
    {
        "id": 1, // id,與parent_id關聯
        "title": "張三",
        "parent_id": -1,//父級id -1為第一級,與id做關聯查詢父子級關系
    },
    {
        "id": 2, 
        "title": "張小二",
        "parent_id": 1, 
    },
    {
        "id": 3,
        "title": "張小三",
        "parent_id": 2,
    }
]


免責聲明!

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



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