var data =[{id:1,name:"办公管理",pid:0,children:[{id:2,name:"请假申请",pid:1,children:[{id:4,name:"请假记录",pid:2}],},{id:3,name:"出差申请",pid:1}]},{id:5,name:"系统设置",pid:0,children:[{id:6,name:"权限管理",pid:5,children:[{id:7,name:"用户角色",pid:6},{id:8,name:"菜单设置",pid:6}]}]},];
第一种、根据树中键值找到第一个符合要求的对象
// data 是树型数组// key 是String 对象中的key值// value 是key值符合的条件functiongetChidlren(data, key, value){let result =null;letfn=function(d){if(Array.isArray(d)){// 判断是否是数组for(let i =0; i < d.length; i++){const e = d[i];if(e[key]=== value){// 数据循环每个子项,并且判断子项下边是否有id值
result = e;// 返回的结果等于每一项break;}elseif(e.children){fn(e.children);// 递归调用下边的子项}}}}fn(data);// 调用一下return result;}
console.log(getChidlren(data,"id",8));
第二种、根据键值找到树中符合要求的多个对象,最后输出是一个数组
// data 是树型数组// key 是String 对象中的key值// value 是key值符合的条件functiongetAllChidlren(data,key,value){var result =[];varfn=function(data){if(Array.isArray(data)){// 判断是否是数组并且没有的情况下,
data.forEach(item=>{if(item[key]=== value){// 数据循环每个子项,并且判断子项下边是否有id值
result.push(item);// 返回的结果等于每一项}elseif(item.children){fn(item.children);// 递归调用下边的子项}})}}fn(data);// 调用一下return result;}
console.log(getAllChidlren(data,"pid",1));