js遞歸根據父級id獲取所有的子節點


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /*
id: 子節點的pid,
pid: 0代表頂級數據 父id相當於子數據的pid
label: 信息
children: 數組 子節點數據
*/
        data = [{
            id: 1,
            label: '一中隊',
            children: [{
                id: 4,
                label: '一支隊',
                children: [
                    {
                    id: 9,
                    label: '張三'
                }, {
                    id: 10,
                    label: '李四',
                    children:[
                        {
                              id: 110,
                              label: '李110四',
                        }
                    ]
                }
                ]
            }]
        }, {
            id: 6,
            label: '四中隊',
        }]

        var returnedItem = []; //定義一個空數組
        function find(arr, id) {
            //利用foreach循環遍歷
            arr.forEach((item) => {
                //判斷遞歸結束條件
                if (item.id == id) {
                    // 存儲數據到空數組
                    returnedItem=item.children;
                } else if (item.children != null) //判斷chlidren是否有數據
                {
                    //遞歸調用
                    find(item.children, id);
                }
            })
            return returnedItem;
        }

        var item = new find(data, 10);
        console.log(item)
    </script>
</body>

</html>


免責聲明!

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



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