文章正文

JS递归整理层级关系,常用在下拉菜单多级分类缩进

加入时间:2020/11/2 15:23:05

<!DOCTYPE html>

<html lang="en">

 

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <title>Document</title>

</head>

 

<body>

    <script>

        let data = [

            { id: 1, title: '你好1', classid: 0 },

            { id: 2, title: '你好2', classid: 1 },

            { id: 3, title: '你好3', classid: 2 },

            { id: 4, title: '你好4', classid: 1 },

            { id: 5, title: '你好5', classid: 2 },

            { id: 6, title: '你好6', classid: 1 },

            { id: 7, title: '你好7', classid: 0 },

            { id: 8, title: '你好8', classid: 0 },

            { id: 9, title: '你好9', classid: 8 },

            { id: 10, title: '你好10', classid: 9 },

            { id: 11, title: '你好11', classid: 0 },

        ];

        function recursion(items, match,level) {

            let result = [];

            if (items == null || items.length == 0) {

                return result;

            }

            for (const item of items) {

                if (match(item)) {

                    let prv='';

                    if(level>0){

                        for(let i=0;i<level;i++){                            

                            if(i==0)prv='└';

                            else prv+='-';

                        }

                    }

                    item.title=prv+item.title;

                    result.push(item);

                    var nlevel=level+1;

                    let childs=recursion(items,(n)=>n.classid==item.id,nlevel);

                    result=result.concat(childs);     

                }

            }

            return result;

        }

        let jieguo=recursion(data,(n)=>n.classid==0,0)

        console.log(data,jieguo);

    </script>

</body>

 

</html>

字体大小[ ]

版权所有:有信心——uxinxin 我的个人网站欢迎常来!手机版(新站开启,请多多关照) 豫ICP备12017930号-1
 豫公网安备 41910102000493号