javascript - 访问 javascript 中的嵌套对象

标签 javascript html json

我正在尝试运行一些 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];
    }
}

Fiddle here.

另外,我认为你的意思是 search("Hello") , 正确的?如果没有,那就是 var search = function(x) { return people[x]; }

关于javascript - 访问 javascript 中的嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18197323/

相关文章:

JavaScript : Alert Box dismissed when tabs switched

javascript - onKeyup事件调用时查找控件的id

javascript - 如何在带有多个按钮的 Twitter Popover 中使用 "div"?

javascript - 从 JSON 结构中获取数据

javascript - Angular 误差我不明白?

javascript - IE7 将两个按钮保持在同一行的问题

ios - 错误解析 JSON 错误 3840

python - OpenCV(在 C++ 中)到 MQTT 代理

javascript - 在 Thunderbird 扩展中打开浏览器窗口

asp.net - 在查询字符串中传递值以自动填充表单上的字段