首頁  >  文章  >  web前端  >  如何透過標籤尋找嵌套 JavaScript 物件中的特定物件?

如何透過標籤尋找嵌套 JavaScript 物件中的特定物件?

Linda Hamilton
Linda Hamilton原創
2024-11-03 21:13:29355瀏覽

How to Find a Specific Object within  a Nested JavaScript Object by Label?

迭代嵌套JavaScript 物件:透過標籤識別物件

要遍歷嵌套JavaScript 物件並定位具有特定標籤的對象,請依照下列步驟操作:

使用遞歸實作

遞歸地迭代巢狀物件:

const iterate = (obj) => {
    Object.keys(obj).forEach(key => {
        console.log(`key: ${key}, value: ${obj[key]}`)

        if (typeof obj[key] === 'object' && obj[key] !== null) {
            iterate(obj[key])
        }
    })
}
iterate(obj); // obj is the main object to be traversed

使用非遞迴方法實作(2023 更新)

對於非遞迴方法:

const iterate = (obj) => {
    const stack = [obj];
    while (stack?.length > 0) {
        const currentObj = stack.pop();
        Object.keys(currentObj).forEach(key => {
            console.log(`key: ${key}, value: ${currentObj[key]}`);
            if (typeof currentObj[key] === 'object' && currentObj[key] !== null) {
                stack.push(currentObj[key]);
            }
        });
    }
};

範例物件

考慮以下嵌套物件:

var cars = {
    label: 'Autos',
    subs: [
        {
            label: 'SUVs',
            subs: []
        },
        {
            label: 'Trucks',
            subs: [
                {
                    label: '2 Wheel Drive',
                    subs: []
                },
                {
                    label: '4 Wheel Drive',
                    subs: [
                        {
                            label: 'Ford',
                            subs: []
                        },
                        {
                            label: 'Chevrolet',
                            subs: []
                        }
                    ]
                }
            ]
        },
        {
            label: 'Sedan',
            subs: []
        }
    ]
};

使用識別碼

擷取帶有標籤" 的物件4 Wheel Drive 」使用遞歸方法,呼叫:

iterate(cars);

要使用非遞歸方法檢索相同的對象,呼叫:

iterate(cars);

這將記錄所有密鑰-嵌套對像中的值對,包括所需的對象。

以上是如何透過標籤尋找嵌套 JavaScript 物件中的特定物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn