2016-05-26 7 views
1

私は、他の複数のオブジェクトを含むオブジェクトを渡すjavascript関数を持っています。javascriptでオブジェクト内のすべてのオブジェクトを反復処理する方法

createButtons({ 
    normalButtons: { 
     button: { 
      type: 'website', 
      name: 'Website', 
     } 
    } 
    socialButtons: { 
     socialButton: { 
      type: 'fb-share', 
      name: 'Share on Facebook' 
     }, 
     socialButton: { 
      type: 'copyUrl', 
      name: 'Copy Link' 
     } 
    } 
}); 

今、私はすべてのsocialButtonsを反復処理したいが、私が使用しないときのために...ループの中で、それが唯一の最初の項目

function createButtons(options) { 
    for (x in options.socialButtons) { 
     console.log(options.socialButtons[x]); 
    } 
} 

を得るように見えることが唯一の1つのオブジェクトをログに記録します、Facebookのもの。

私は何か間違っているか、これを解決する良い方法がありますか教えてください。

ありがとうございました!

+1

重複するキーがあります。 'socialButton'が2回発生する – thefourtheye

答えて

3

正常にそのオブジェクトのプロパティをループしています。問題は、1つのプロパティしか持たないことです。

socialButtonの値を定義し、socialButtonの別の値を定義しました。

プロパティ名を一意にする必要があります。

さらに、配列を使用してください。

+0

各socialButtonの配列を作成した場合、配列を反復処理し、それぞれのsocialButtonの 'type'を取得することについて、どのような変更が行われますか? –

+0

"各ソーシャルボタンの配列を作成する場合" - しないでください。 * all *ソーシャルボタンを含む配列**を作成します。 – Quentin

+0

ええ、申し訳ありませんが、ちょっと速すぎましたが、それは私が意味したものです –

2

あなたのオブジェクトはsocialButtonsの両方の項目として機能しません:同じキーを持つので、最初のボタンは2番目のボタンに置​​き換えられます。

2番目のsocialButtonをsocialButton2に変更することをお勧めします。すべてがうまくいくはずです。

0

同じプロパティ名socialButtonsocialButtonsオブジェクト内に使用しています。これがあなたの問題の原因です。

名前をsocialButtonに変更すると、固有のプロパティ名に変更することで、目的を達成するのに役立ちます。

関連する問題