如何使用for / in循环来传输对象属性?

时间:2016-10-21 15:50:37

标签: javascript loops object

我有一个像下面例子一样嵌套的对象。

var posts = {
        "post1": {
            "slug": "slug1",
            "title": "title1",
        },
        "post2": {
            "slug": "slug2",
            "title": "title2",
    }
};

我试图写一个for / in循环,允许我遍历这个对象。

var testLoop = function () {
    for (var prop in posts){
        post = prop;
        console.log(post); // Outputs post1 and post2 
        console.log(post.slug); // Outputs undefined
    }
}

如上所示,我无法存储并稍后访问每个迭代对象的属性。仅存储和记录对象的名称。当我运行typeof时,我发现它甚至不是一个对象,它只是一个字符串。

如何在循环期间将每个迭代属性正确存储为对象(post1,post2等),以便使用点表示法访问其属性?

1 个答案:

答案 0 :(得分:1)

使用时

for (var prop in posts){ ... }

它遍历posts对象中的字符串键。

这里的要点是prop将是一个字符串,而不是当前代码所期望的对象。

正如评论中的用户所建议的那样,因为prop是对象键作为字符串,所以您需要使用posts[prop]来引用实际对象。

以下是一些更新的代码。

var testLoop = function () {
    for (var prop in posts){
        post = posts[prop]; // ** this is line that needs to be modified **
        console.log(post); // Outputs post object 
        console.log(post.slug); // this should work now
    }
}