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中遇到的特定问题。有关更多信息,请参阅并使用。抱歉!广告迪德