const tree = {
id:"root",
children:[
{id:1,children:['id1']},
{id:2,children:['id2']},
{id:3,children:['id3']},
{id:4,children:[
{id:5,children:['id4的id5']}
]},
{id:6,children:[
{id:7,children:[
{id:8,children:['id4的id5']}
]}
]}
]
}
function search(id,arr){
let asd = {};
arr.forEach((val,ind,arr)=>{
if(!val.id) {asd = 'meiyou';return}
if(val.id == id){
asd['id'] = val.id;
asd['children'] = val.children;
console.log(asd); // 这里打印的值是正确的
return;
}else{
search(id,val.children);
}
});
return asd;
}
var result = search(5,tree.children);
console.log(result); // 为空{}
数组的 第一层可以正常返回,更深一点的就返回时{},求问正确答案
不能把变量
asd
定义在函数search
里面,这样的话每次递归都会把asd
重新赋值为{}
,search
函数写的也有问题,请参考下面的代码