为了账号安全,请及时绑定邮箱和手机立即绑定

急求!!!!我下面的代码使用的递归,但是有点问题,请教?万分感谢

急求!!!!我下面的代码使用的递归,但是有点问题,请教?万分感谢

紫衣仙女 2019-06-10 09:04:41
需求是找到对应code第一次出现的位置,一下函数始终不能正确执行,大家帮忙改正下letmenus=[{code:2,name:'222',children:[{code:33,name:'222sa',children:[{code:44,name:'22'}]}]},{code:922,name:'922',children:[{code:9222,name:'92222222dsadsa',children:[{code:44222,name:'442222dsads'}]}]}]functiondigui(arr,code){for(vari=0;i<arr.length;i++){if(arr[i].code==code){returnarr[i]}else{if(arr[i].children){digui(arr[i].children,code)}}}}console.log(digui(menus,44222))
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

functiondigui(arr,code){
for(vari=0;iif(arr[i].code==code){
returnarr[i]
}else{
if(arr[i].children){
digui(arr[i].children,code)
}
}
}
}
你这个函数仔细看一下有一些情况下是没有返回值的(即if(arr[i].children)的分支)。你应该取到子级递归的结果,如果找到了,就返回:
if(arr[i].children){
letresult=digui(arr[i].children,code)
if(result)returnresult
}
                            
查看完整回答
反对 回复 2019-06-10
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

letchildCode=digui(item.children,code);
if(childCode){
returnchildCode
}
需要对递归函数返回值做一下处理
                            
查看完整回答
反对 回复 2019-06-10
  • 2 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信