需求是找到对应code第一次出现的位置,一下函数始终不能正确执行,大家帮忙改正下
let menus = [{
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'
}
]
}
]
}]
function digui(arr, code) {
for(var i=0;i<arr.length;i++) {
if(arr[i].code == code) {
return arr[i]
} else {
if (arr[i].children) {
digui(arr[i].children, code)
}
}
}
}
console.log(digui(menus, 44222))
你这个函数 仔细看一下 有一些情况下是没有返回值的(即 if (arr[i].children)的分支)。你应该取到子级递归的结果,如果找到了,就返回: