- 37
- 0
有如下递归函数,无法返回正确的结果:
const navItems = [
{
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: '',
},
],
},
],
},
];
const navName = 'name12';
const getSelectedLabel = (navItems, navName) => {
let selectedLabel;
const findSelectedLabel = (items, name) => {
items.forEach((item) => {
if (item.name === name) {
selectedLabel = item.label;
} else if (item.items && Array.isArray(item.items)) {
findSelectedLabel(item.items, name);
}
});
};
findSelectedKey(navItems, navName);
return selectedLabel;
};
想要通过递归函数,根据name值找到对应的label值,但是函数先返回了undefined,再执行到了赋值,应该怎么修改才对?
还有我本来写的是不要嵌套外层函数:
const findSelectedLabel = (items, name) => {
items.forEach((item) => {
if (item.name === name) {
return item.label;
} else if (item.items && Array.isArray(item.items)) {
findSelectedLabel(item.items, name);
}
});
};
findSelectedLabel(navItems, navName)
直接找到后返回这个值,但是也是不对的...虽然函数走到了return这句话,但并没有终止整个函数,最后返回的还是undefined.
很多人说运行结果是对的,那是因为刚好name4在第一层里,如果使用navName = name12,就不对了...
还有使用for循环也不对...使用for循环以后,它只递归第一层,只会一层层往里递归,而不会进入for循环...
谢谢各位大神~
0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 10 元积分
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
