我正在尝试运行一些 JavaScript,但它不起作用。
我有一个对象,它有两个属性,它们也是对象。
var people = {
me: {
name: "Hello"
},
molly: {
name: "Molly"
}
};
我正在尝试创建一个使用 for/in 语句和 if 语句来列出人员属性的函数。
var search = function (x) {
for (var a in people) {
if (people.a.name === x) {
return people.a;
}
}
};
因此该函数循环遍历 people 的属性并将它们分配给变量 a。因此,people.a 将等于 people 的属性(property)。然后该函数返回属性 (people.a)。
因此,如果我输入 me 作为参数 x,该函数是否应该返回 me 对象的属性?我将此代码放入 jsLint 和 jsHint 中,它通过了,但我决定删除更正,因为它们没有用。
然后我想在浏览器中打印对象属性:
var print = search("me");
document.getElementById("p").innerHTML(print);
我将其链接到一个 html 文档,其中带有
标记 id“p”。我已经在 html 文档中测试了 javascript,所以我知道 javascript 文档已正确链接。
但是代码将无法工作。有人有什么建议吗?
多亏了答案,我现在可以正常工作了。但我认为它只会在屏幕上打印“Hello”,而不是 { name: "Hello"}。
最佳答案
您需要使用people[a]
,不是people.a
。前者查找具有存储在 a
中的值名称的属性。 ;后者寻找字面上名为“a”的属性,该属性当然不存在。
for (var a in people) {
if (people[a].name === x) {
return people[a];
}
}
另外,我认为你的意思是 search("Hello")
, 正确的?如果没有,那就是 var search = function(x) { return people[x]; }
。
关于javascript - 访问 javascript 中的嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18197323/