繁体   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