有如下遞歸函數(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值找到對(duì)應(yīng)的label值,但是函數(shù)先返回了undefined,再執(zhí)行到了賦值,應(yīng)該怎么修改才對(duì)?還有我本來寫的是不要嵌套外層函數(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)直接找到后返回這個(gè)值,但是也是不對(duì)的...雖然函數(shù)走到了return這句話,但并沒有終止整個(gè)函數(shù),最后返回的還是undefined.很多人說運(yùn)行結(jié)果是對(duì)的,那是因?yàn)閯偤胣ame4在第一層里,如果使用navName=name12,就不對(duì)了...還有使用for循環(huán)也不對(duì)...使用for循環(huán)以后,它只遞歸第一層,只會(huì)一層層往里遞歸,而不會(huì)進(jìn)入for循環(huán)...謝謝各位大神~
遞歸函數(shù)如何返回正確值?
慕虎7371278
2019-05-20 17:50:25