递归查找对应的值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let datas = [
            {
                id: '1',
                name: '第一个',
                children: [
                    { id: '2', name: '第二十', children: []},
                    { id: '3', name: '第二十1', children: []},
                    { id: '4', name: '第二十2', children: [
                        { id: '22', name: '第二十', children: []},
                        { id: '33', name: '第二十11', children: []},
                    ]},
                ]
            }, {
                id: '2',
                name: '第一c个',
                children: [
                    { id: '223', name: '第二十3', children: []},
                    { id: '3222', name: '第二十12', children: []},
                    { id: '4222', name: '第二十22', children: [
                        { id: '2222222', name: '第二2十', children: []},
                        { id: '3233', name: '第二十211', children: []},
                    ]},
                ]
            }, {
                id: '11',
                name: '第一11个',
                children: [
                    { id: '20', name: '第二十333', children: []},
                    { id: '30', name: '第二十31', children: []},
                    { id: '40', name: '第二十2', children: [
                        { id: '922', name: '第二3十', children: []},
                        { id: '933', name: '第二十131', children: []},
                    ]},
                ]
            }
        ]
    
            function find(id, datas) {
                let name = '';
                for(let i in datas) {
                    let item = datas[i];
                    if(item.id === id){
                        name = item.name
                        return name;
                    }
                    if(item.children.length){
                      let result = find(id, item.children)
                      if (result) {
                        return result
                      }
                    }
                }
                return name
            }
            let result = find('20', datas)
            console.log(result)
    </script>
</body>
</html>

 

posted @ 2020-10-16 13:45  mediocre92  阅读(262)  评论(0)    收藏  举报