有如下遞歸函數(shù),無法返回正確的結(jié)果:constnavItems=[{name:'name1',label:'人事管理',items:[{name:'name2',label:'員工管理',items:[{name:'name3',label:'員工管理-0',items:[{name:'name4',label:'員工管理-0-0',items:'',},{name:'name5',label:'員工管理-0-1',items:'',},],},{name:'name6',label:'員工管理-1',items:'',},],},{name:'name7',label:'部門管理',items:[{name:'name8',label:'部門管理1',items:'',},{name:'name9',label:'部門管理2',items:'',},],},{name:'name10',label:'職位管理',items:[{name:'name11',label:'職位管理1',items:'',},{name:'name12',label:'職位管理2',items:'',},],},],},];constnavName='name12';constgetSelectedLabel=(navItems,navName)=>{letselectedLabel;constfindSelectedLabel=(items,name)=>{items.forEach((item)=>{if(item.name===name){selectedLabel=item.label;}elseif(item.items&&Array.isArray(item.items)){findSelectedLabel(item.items,name);}});};findSelectedKey(navItems,navName);returnselectedLabel;};想要通過遞歸函數(shù),根據(jù)name值找到對應(yīng)的label值,但是函數(shù)先返回了undefined,再執(zhí)行到了賦值,應(yīng)該怎么修改才對?還有我本來寫的是不要嵌套外層函數(shù):constfindSelectedLabel=(items,name)=>{items.forEach((item)=>{if(item.name===name){returnitem.label;}elseif(item.items&&Array.isArray(item.items)){findSelectedLabel(item.items,name);}});};findSelectedLabel(navItems,navName)直接找到后返回這個值,但是也是不對的...雖然函數(shù)走到了return這句話,但并沒有終止整個函數(shù),最后返回的還是undefined.很多人說運行結(jié)果是對的,那是因為剛好name4在第一層里,如果使用navName=name12,就不對了...還有使用for循環(huán)也不對...使用for循環(huán)以后,它只遞歸第一層,只會一層層往里遞歸,而不會進入for循環(huán)...謝謝各位大神~
遞歸函數(shù)如何返回正確值?
肥皂起泡泡
2019-05-21 10:36:19