场景:
树结构数据data,及条件id,要返回树结构中id为条件id的对象
可能是vue的问题,直接return,return不能返回符合的对象
问题代码
a(){
let param=this.getMappingDept(data,id)//无法得到data[i],获得的是undefined
}
getMappingDept(data,id){
for(var i=0;i<data.length;i++){
if(data[i].id!=id && typeof(data[i].childList)!='undefined'){
// children若为空数组,则将children设为undefined
this.getMappingDept(data[i].childList,id);
}else if(data[i].id===id){
return data[i] ;
}
}
},
解决方案1: 在data中定义一个全局变量,符合条件时,对其赋值
data(){
return{
param:{}
}
}
methods:{
a(){
this.getMappingDept(data,id)
console.log(param)//得到data[i]
}
getMappingDept(data,id){
for(var i=0;i<data.length;i++){
if(data[i].id!=id && typeof(data[i].childList)!='undefined'){
// children若为空数组,则将children设为undefined
this.getMappingDept(data[i].childList,id);
}else if(data[i].id===id){
this.param=data[i]
return ;
}
}
},
}
解决方案2:使用回调函数,解决无法直接返回的问题(推荐)
methods:{
a(){
this.getMappingDept(datalist,id,(data=>{
console.log(data)//得到data[i]
}))
}
getMappingDept(data,id,callback){
for(var i=0;i<data.length;i++){
if(data[i].id!=id && typeof(data[i].childList)!='undefined'){
// children若为空数组,则将children设为undefined
this.getMappingDept(data[i].childList,id,callback);
}else if(data[i].id===id){
callback(data[i])
}
}
},
}
}