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在這裏插入圖片描述

改寫成:

 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;

結果:成功,
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章