簡體   English   中英

如何使用方括號表示法使用多個變量來調用嵌套對象?

[英]How do I use Square Bracket Notation to use multiple variables to call nested objects?

我正在嘗試創建一個函數,該函數將使用多個變量來選擇正確的嵌套對象,然后對其進行操作。

var group1 = {
        fred: {
            debt: 5,
            income: 2
        },
        suzy: {
            debt: 3,
            income: 5
        }
    },
    group2 = {
        molly: {
            debt: 4,
            income: 4
        },
        jason: {
            debt: 6,
            income: 1
        }
    };

function debtCheck(group, name) {
    console.log(group.name.debt);         ==>Uncaught TypeError: Cannot read property 'debt' of undefined
    console.log(group[name].debt);        ==>Uncaught TypeError: Cannot read property 'debt' of undefined
    console.log([group][name].debt);      ==>Uncaught TypeError: Cannot read property 'debt' of undefined
    console.log([group[name]].debt);      ==>undefined
}

debtCheck('group1', 'fred');

目標是使它在控制台中顯示5。 如果我只做一個變量,它就可以正常工作。

function debtCheck(name) {
    console.log(group1[name].debt);
}

debtCheck('fred');

希望我能清楚說明我的要求。 謝謝您的幫助!

我對此有其他想法:基礎對象不能是變量嗎? 還是不能連續有兩個變量?

您將第一個參數作為字符串而不是對象傳遞。 嘗試debtCheck(group1, 'fred'); 同樣,由於第二個參數應該是一個字符串,因此您需要通過group[name].debt訪問它。

關於第一點的一些背景材料可以幫助您: 將值/引用傳遞給函數 關於第二點: 使用對象

 var group1 = { fred: { debt: 5, income: 2 }, suzy: { debt: 3, income: 5 } }; var group2 = { molly: { debt: 4, income: 4 }, jason: { debt: 6, income: 1 } }; function debtCheck(group, name) { console.log(group[name].debt); } // debtCheck('group1', 'fred'); debtCheck(group1, 'fred'); 

兩件事情。 您將group1作為字符串而不是對象放入。 其次,在通過特定變量名稱引用對象時,不能使用點符號。 您需要使用方括號。

嘗試:

function debtCheck(group, name) {
    console.log(group[name].debt);
 }

debtCheck(group1, 'fred');

暫無
暫無

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

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