从嵌套数组中获取对象中的值路径
Get path of value in object from nested array
如何获取此嵌套数组中嵌套值的路径:
const categories = [
{
name: 'category1',
subcategories: [
{
name: 'category2',
subcategories: [],
},
{
name: 'category3',
subcategories: [
{
name: 'category4',
subcategories: [],
},
],
},
],
},
{
name: 'category5',
subcategories: [],
},
];
我需要实现一个函数,它将 return 像这样:
console.log(getCategoryPath(类别, 'category4')); // 应该输出:'/category1/category3/category4'
到目前为止我有:
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}`;
}
}
);
}
});
}
}
例如,这会打印匹配的类别名称 /category4
,但我需要打印该值 /category1/category3/category4
.
的整个路径
在这种情况下,我无法识别匹配 categoryName
的 parent/parents。我可以使用递归来解决这个问题吗?如果可以,我该如何应用它?
您可以应用递归:
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'));
如何获取此嵌套数组中嵌套值的路径:
const categories = [
{
name: 'category1',
subcategories: [
{
name: 'category2',
subcategories: [],
},
{
name: 'category3',
subcategories: [
{
name: 'category4',
subcategories: [],
},
],
},
],
},
{
name: 'category5',
subcategories: [],
},
];
我需要实现一个函数,它将 return 像这样:
console.log(getCategoryPath(类别, 'category4')); // 应该输出:'/category1/category3/category4'
到目前为止我有:
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}`;
}
}
);
}
});
}
}
例如,这会打印匹配的类别名称 /category4
,但我需要打印该值 /category1/category3/category4
.
在这种情况下,我无法识别匹配 categoryName
的 parent/parents。我可以使用递归来解决这个问题吗?如果可以,我该如何应用它?
您可以应用递归:
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'));