比如说 我想找得id为4,就应该返回 [1,3,4]
想找得id 为9 该返回 [1,3,9]
想找得id为7 改返回 [6,7]
不知道我说明白没有。谢谢解答啊
比如说 我想找得id为4,就应该返回 [1,3,4]
想找得id 为9 该返回 [1,3,9]
想找得id为7 改返回 [6,7]
不知道我说明白没有。谢谢解答啊
直接递归遍历啊,先校验id是否相同,相同直接return,不同则看是否有children,有则记录下当前层的id并继续向下遍历,无则清空记录并跳过当前的节点,遍历下一个同层节点。
function solution(arr,id){
var ans=[];
var flag=false;
function dps(obj,depth){
ans[depth]=obj.id;
if(obj.id==id){
flag = true;
}else{
if(obj.children)
for(var i=0;i<obj.children.length;i++){
flag = dps(obj.children[i],depth+1);
if(flag)
break;
}
}
if(flag)
return flag;
ans[depth]=undefined;
}
arr.forEach(function(a){if(dps(a,0))return;})
return ans.filter(function(obj){return undefined!=obj;});
}
8 回答4.4k 阅读✓ 已解决
6 回答2.8k 阅读✓ 已解决
5 回答2.5k 阅读✓ 已解决
5 回答6.1k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
3 回答2.4k 阅读
4 回答2.7k 阅读✓ 已解决
很多人都在抱怨你没有把代码贴出来,能回答问题的人可都是真心的!
简化版实验原始数据(也供其他人可以验证自己的方案)
JS查找输出结果