簡體   English   中英

如何在javascript中將子對象分配給變量?

[英]How to assign sub-object to a variable in javascript?

我有一個看起來像的javascript對象

var obj = {
    p1: {
        name: "name1",
        age: "age1"
    }
    p2: {
        name: "name2",
        age: "age2"
    }
}

我希望能夠迭代訪問名稱和年齡,這意味着:

for (var p in obj) {
    if (obj.hasOwnProperty(p)) {
        func1(p.name);
        func2(p.age);
    }
}

但是,p.name在調試器中顯示為“ undefined”,p的其他鍵也是如此。 我想知道javascript是否允許用戶像Python中一樣將子對象分配給新變量。

我認為您在那兒缺少什么。 看:

for (var p in obj) {
    if (obj.hasOwnProperty(p)) {
        func1(obj[p].name);
        func2(obj[p].age);
    }
}

這應該工作。

p僅作為obj的屬性存在,因此,即使在for-in循環內,您仍必須從循環訪問p作為obj的屬性。

如果您正在學習javascript,這可能並不明顯,但是實際上有兩種訪問對象屬性的方式:點表示法和方括號表示法。 以您的示例為例, obj.p1.name === obj['p1']['name]

有時,您需要方括號表示法,因為您希望向其傳遞一些變量,這是for-in循環中所需的變量。

我希望這很清楚。 如果沒有,您可以看到它正在此JSBin上運行

嵌套對象嚴格格式化(在所有嵌套元素中都有名稱,年齡)。
另外,檢查它具有hasOwnProperty的原因是什么?
您通過鍵迭代對象,不知道它具有iterator key嗎?

為什么不只是簡單地迭代對象?

 var obj = { p1: { name: "name1", age: "age1" }, p2: { name: "name2", age: "age2" } }; function func1(value) { console.log('Name:', value); } function func2(value) { console.log('Age:', value); } for(var i in obj) { if(typeof obj[i] != 'object') continue; console.log('\\nOutputing:', i); func1(obj[i].name); func2(obj[i].age); } 

暫無
暫無

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

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