簡體   English   中英

從嵌套數組中獲取 object 中的值路徑

[英]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: [],
    },
];

我需要實現一個 function ,它將返回如下內容:

console.log(getCategoryPath(categories, 'category4')); // 應該 output: '/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的父母/父母。 我可以對這個問題使用遞歸嗎?如果可以,我該如何應用它?

您可以應用遞歸:

 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'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM