Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在递归对象结构(表示文件系统)中搜索对象_Javascript - Fatal编程技术网

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
不是递归的。看看人们链接的其他答案。