简单递归实现,树形结构 搜索名称过滤数据

69 阅读1分钟

简单递归实现,树形结构 搜索名称过滤数据。前端过滤搜索

如下,后端返回的数据格式:

const data = [{
       key:1,
       title:"学生工作部",
       children:[{
               key:2,
               title:"生活宣传科"
           },
           {
               key:3,
               title:"舞蹈部门",
               children:[{
                       key:4,
                       title:"民族舞"     
                   },
                    {
                       key:5,
                       title:"现代舞舞"     
                   }]
           }]
      },
     {
       key:6,
       title:"教务处",
       children:[{
               key:7,
               title:"教学科",
               children:[]
           }]
      }]

// value 搜索文字,arr数据源

searchTree(value,arr){
 let newarr = [];
 arr.forEach(element => {
   if (element.title.indexOf(value) > -1) { // 判断条件
     newarr.push(element);
   } else {
     if (element.children && element.children.length > 0) {
       let redata = this.searchTree(value, element.children);
       if (redata && redata.length > 0) {
         let obj = {
           ...element,
           children: redata
         };
         newarr.push(obj);
       }
     }
   }
 });
 return newarr;
},