js for循环 递归 return 失败

简介: js for循环 递归 return 失败
// 非常nice 的递归方法:
for (let i = 0, len = menuList.length; i < len; i++) {
console.log(Number(menuList[i].id), Number(obj.id))
if (Number(menuList[i].id) === Number(obj.id)) {
console.log(menuList[i], ‘--------------------9089899878979’)
return menuList[i];
}
if (menuList[i].children) {
this.findTreeOfObj(menuList[i].children, obj);
}
}


结果:走了打印的结果,却无法retrun


20200701183548719.png


改写成:


 let result = {};
                menuList.forEach(item => {
                    const loop = data => {
                        if (Number(data.id) === Number(obj.id)) {
                            result = data;
                            return result;
                        }
                        let child = data.children;
                        if (child) {
                            for (let i = 0; i < child.length; i++) {
                                loop(child[i])
                            }
                        }
                    }
                    loop(item);
                })
                return result;


结果:成功,


20200701183651438.png


相关文章
|
6月前
|
机器学习/深度学习 JavaScript 前端开发
JS进阶教程:递归函数原理与篇例解析
通过对这些代码示例的学习,我们已经了解了递归的原理以及递归在JS中的应用方法。递归虽然有着理论升华,但弄清它的核心思想并不难。举个随手可见的例子,火影鸣人做的影分身,你看到的都是同一个鸣人,但他们的行为却能在全局产生影响,这不就是递归吗?雾里看花,透过其间你或许已经深入了递归的魅力之中。
292 19
|
JavaScript 前端开发
JS循环for、for...of、for...in
本文介绍了JavaScript中不同的循环语句,包括传统的`for`循环、`for...of`循环用于遍历数组和类数组对象、`for...in`循环用于遍历对象的属性,并通过示例代码展示了它们的用法和区别。
220 6
JS循环for、for...of、for...in
|
JavaScript 前端开发
JavaScript基础知识-流程控制之while循环
这篇文章介绍了JavaScript中的while循环和do...while循环的基础知识,并通过一个实际案例演示了如何使用while循环计算投资增长到特定金额所需的年数。
250 2
JavaScript基础知识-流程控制之while循环
|
JavaScript 前端开发
js循环有几种
js循环有几种
200 0
|
8月前
|
JavaScript 前端开发 测试技术
|
JavaScript
js 循环数组取值
js 循环数组取值
295 122
|
JavaScript 前端开发 索引
js的循环中foreach、for in和for of的区别
js的循环中foreach、for in和for of的区别
540 0
|
9月前
|
消息中间件 JavaScript 前端开发
最细最有条理解析:事件循环(消息循环)是什么?为什么JS需要异步
度一教育的袁进老师谈到他的理解:单线程是异步产生的原因,事件循环是异步的实现方式。 本质是因为渲染进程因为计算机图形学的限制,只能是单线程。所以需要“异步”这个技术思想来解决页面阻塞的问题,而“事件循环”是实现“异步”这个技术思想的最主要的技术手段。 但事件循环并不是全部的技术手段,比如Promise,虽然受事件循环管理,但是如果没有事件循环,单一Promise依然能实现异步不是吗? 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您
|
前端开发 JavaScript
JavaScript递归菜单栏
JavaScript递归菜单栏
JavaScript递归菜单栏
|
前端开发 JavaScript
前端基础(八)_JavaScript循环(for循环、for-in循环、for-of循环、while、do-while 循环、break 与 continue)
本文介绍了JavaScript中的循环语句,包括for循环、for-in循环、for-of循环、while循环、do-while循环以及break和continue的使用。
933 1
前端基础(八)_JavaScript循环(for循环、for-in循环、for-of循环、while、do-while 循环、break 与 continue)