我有一个像下面例子一样嵌套的对象。
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等),以便使用点表示法访问其属性?
答案 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
}
}