JavaScript—如何在数组中递归地查找元素并返回其路径?
数据结构如下所示JavaScript—如何在数组中递归地查找元素并返回其路径?,javascript,arrays,Javascript,Arrays,数据结构如下所示 [{id: 1, items:[{ id: 2, items: [ id: 3] }, { id: 4, items:[id: 5] }] }, { id: 6, items:[{ id: 7, items: [ id: 8] }, {id: 9, items:[id: 10] }] }]
[{id: 1,
items:[{ id: 2,
items: [ id: 3]
},
{ id: 4,
items:[id: 5]
}]
},
{
id: 6,
items:[{ id: 7,
items: [ id: 8]
},
{id: 9,
items:[id: 10]
}]
}]
我想通过元素的id
查找元素,并返回其路径,包括其父元素的路径
例如,如果id=10
,则10的路径为6.9.10
findId(array, id, path,pathList){
array.map(i => {
if(i.items == undefined){
return;
}
path = path + '.' +item.id;
pathList.push(path);
if(i.id == id){
return pathList;
}else{
pathList.pop();
this.findId(i.fields, id, path, pathList);
}
})
}
我的问题是,如何查找id=10
并返回包含[6,6.9,6.9.10]
提前谢谢 你可以按照我的方法:
var obj=[{id:1,
项目:[{id:2,
项目:[{id:3}]
},
{id:4,
项目:[{id:5}]
}]
},
{
id:6,
项目:[{id:7,
项目:[{id:8}]
},
{id:9,
项目:[{id:10}]
}]
}];
函数searchId(对象、要查找的索引){
//首先,向数组项添加深度(每个元素)
变量深度=对象;
//路径的结构=[[0,长度为1],[1,长度为2],[2,长度为3],[3,长度为4],…,[last,长度为last]]
var路径=[];
//对于路径的第一个值
路径推送([0,深度.长度]);
//为深度添加深度的测试:
深度映射(函数添加深度(当前){
当前['depth']=路径[path.length-1][0];
如果(当前项目){
//继续排列项目
push([path[path.length-1][0]+1,current.items.length]);
当前.items.map(添加深度);
}否则{
//退路
while(path.length>1&&path[path.length-1][1]发布的问题似乎根本不包含解决问题的内容。StackOverflow希望您能够这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您的尝试,以便说明您在a中遇到的特定问题。有关更多信息,请参阅并使用。抱歉!广告迪德