2016-10-21 9 views
1

私は以下の例のようにネストされたオブジェクトを持っています。for/inループを使用してオブジェクトのプロパティを転送する方法

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

'posts [prop] .slug' – Keith

+0

' for..in'について読んで、それが何であるかを知ることができます。 – Amit

答えて

1

あなたは

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

を使用する場合それはpostsオブジェクト内の文字列キーをループします。

ここで重要な点は、propが文字列になり、現在のコードが期待しているオブジェクトではないことです。

propは文字列としてのオブジェクトキーであるため、実際のオブジェクトを参照するにはposts[prop]を使用する必要があります。

ここにいくつかの更新されたコードがあります。

関連する問題