Sem*_*oir 0 javascript arrays recursion path
如何获取此嵌套数组内的嵌套值的路径:
const categories = [
{
name: 'category1',
subcategories: [
{
name: 'category2',
subcategories: [],
},
{
name: 'category3',
subcategories: [
{
name: 'category4',
subcategories: [],
},
],
},
],
},
{
name: 'category5',
subcategories: [],
},
];
Run Code Online (Sandbox Code Playgroud)
我需要实现一个将返回如下内容的函数:
console.log(getCategoryPath(categories, 'category4')); // should output: '/category1/category3/category4'
Run Code Online (Sandbox Code Playgroud)
到目前为止我已经得到:
const getCategoryPath() = (categories, categoryName) {
if (category.name === categoryName) {
path = `/${category.name}`;
} else {
category.subcategories.find((firstLevelSubcategory) => {
if (firstLevelSubcategory.name === categoryName) {
path = `/${firstLevelSubcategory.name}`;
} else {
firstLevelSubcategory.subcategories.find(
(secondLevelSubcategory) => {
if (secondLevelSubcategory.name === categoryName) {
path = `/${secondLevelSubcategory.name}`;
}
}
);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
例如,这会打印匹配的类别名称/category4,但我需要打印该值的整个路径/category1/category3/category4。
在这种情况下,我无法识别匹配的父级/父级categoryName。我可以使用递归来解决这个问题吗?如果可以,我该如何应用它?
您可以应用递归:
const categories = [ { name: 'category1', subcategories: [ { name: 'category2', subcategories: [], }, { name: 'category3', subcategories: [ { name: 'category4', subcategories: [], }, ], }, ], }, { name: 'category5', subcategories: [], },];
const getNestedPath=(arr,name)=>{
for(let item of arr){
if(item.name===name) return `/${name}`;
if(item.subcategories) {
const child = getNestedPath(item.subcategories, name);
if(child) return `/${item.name}${child}`
}
}
};
console.log(getNestedPath(categories, 'category4'));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1445 次 |
| 最近记录: |