Javascript 在递归对象结构(表示文件系统)中搜索对象
我希望将要搜索的文件夹的名称作为输入传递,并将其所属的对象作为输出 我的数组是这样的:Javascript 在递归对象结构(表示文件系统)中搜索对象,javascript,Javascript,我希望将要搜索的文件夹的名称作为输入传递,并将其所属的对象作为输出 我的数组是这样的: const数组={ 项目:[{ 名称:“parentFolder1”, 项目:[{ 名称:“子文件夹1”, 项目:[] }, { 名称:“子文件夹2”, 项目:[] } ] }, { 名称:“parentFolder2”, 项目:[{ 名称:“sub1”, 项目:[] }, { 名称:“sub2”, 项目:[] } ] } ] }; const sub=Object.values(数组).map(x=> x
const数组={
项目:[{
名称:“parentFolder1”,
项目:[{
名称:“子文件夹1”,
项目:[]
},
{
名称:“子文件夹2”,
项目:[]
}
]
},
{
名称:“parentFolder2”,
项目:[{
名称:“sub1”,
项目:[]
},
{
名称:“sub2”,
项目:[]
}
]
}
]
};
const sub=Object.values(数组).map(x=>
x、 查找(y=>y.item.find(obj=>obj.name=“sub2”))
console.dir(sub)
const数组={
项目:[{
名称:“parentFolder1”,
项目:[{
名称:“子文件夹1”,
项目:[]
},
{
名称:“子文件夹2”,
项目:[]
}
]
},
{
名称:“parentFolder2”,
项目:[{
名称:“sub1”,
项目:[]
},
{
名称:“sub2”,
项目:[]
}
]
}
]
};
const val=array.item.map(folder=>folder.item.find(obj=>obj.name==“sub2”)).find(val=>val)
console.log(val)
如果需要递归
函数查找(名称,obj){
如果(obj.name==name)返回obj;
返回obj.item.reduce((结果,项)=>result | | find(名称,项),false)
}
常量数组={
项目:[{
名称:“parentFolder1”,
项目:[{
名称:“子文件夹1”,
项目:[]
},
{
名称:“子文件夹2”,
项目:[{
名称:“子潜艇”,
项目:[{
名称:“搜索我”,
项目:[]
}]
}]
}
]
},
{
名称:“parentFolder2”,
项目:[{
名称:“sub1”,
项目:[]
},
{
名称:“sub2”,
项目:[]
}
]
}
]
};
console.log(find(“searchme”,array))
您的意思是输出而不是输入吗?对不起,这是个错误。我纠正了它您正在用obj.name=“sub2”
做作。您需要使用比较运算符:obj.name==“sub2”
可能重复@brxnzaz no,它返回“parentFolder2”而不是“parentFolder1”(即使得到相同的结果,您也必须修复该错误)。另外,Array.find
不是递归的。看看人们链接的其他答案。