递归封装

81 阅读1分钟

let recursion = function (array , args , Fun , blackList){

            //递归

            let diff = (array , args , Fun , blackList) =>{

                for(let i in array){ 

                    let data = array[i];

                    if(data[args] || data[args].length != 0){

                        //白名单

                        if(blackList != undefined){

                            for(let i2 in blackList){

                                if(data[i2] != blackList[i2]){

                                    Fun(data);

                                }

                            }

                        }else{

                            Fun(data);

                        }

                        diff(data[args] , args , Fun , blackList)

                    }else{

                        return;

                    }

                }

            };

            diff(array , args , Fun , blackList);

            //返回新值

            return array;

        }

        recursion([res.data],'children',(item) =>{

                    item.contextmenu = true;

                },{

                    level: "0"

                });

第一个参数是数据,第二个参数是需要遍历得字段,第三个是需要操作的,第四个参数是黑名单