2017-09-24 17 views
-1

私はfirebaseからプルダウンし、3つのオブジェクトが内部にオブジェクトを含む配列のペイロードを与えられました。配列内のオブジェクト内のオブジェクトを反復処理する方法

enter image description here

これは私が私の数ヶ月の配列をCONSOLE.LOGときに何が起こるかです:

は、次のスクリーンショットを考えてみましょう。

どのように私はオブジェクト内から必要な情報をログアウトするためにこれを繰り返しますか?

たとえば、私は月の内側と内側のp1、p2が必要です。

私は

this.state.months.map()を行うには、次にmonth.monthをログに記録しようとしたが、それはundefinedを返します。

任意のアイデア?

+0

ネストされたループを使用 – bigbounty

+0

これらの「-Kuog ...」は何ですか? – lilezek

+0

私はそれらがサーバーによって生成されたキーだと思います。 @lilezek – bigbounty

答えて

0

どのようにfor-inループを使用してforループ内のループには?

for (var i = 0, l = this.state.months.length; i < l; i++) { 
    var obj = this.state.months[i]; 
    for (var key in obj) { 
    //check if obj owns the property and not some prototype 
    if (obj.hasOwnProperty(key)) { 
     console.log(obj[key].p1); //what do we do with p1? 
     console.log(obj[key].p2); //what do we do with p2? 
    } 
    } 
} 
+0

を参照してください。これはすべての繰り返しで同じ値を出力しますか?つまり、p1.scoreとp1.nameは、反復するたびに毎回変更されるのではなく、すべてのループに出力されます。もしそれが意味をなさないならば、 –

+0

サンプルjsonを投稿するのはどうですか? –

0

このようにしてみ

jList = this.state.months 
jList.map(jList=>(jList.month+ ", "+ jList.p1 + ", " + jList.p2)) 

出力 -配列

["some-Monthname, p1-someval, p2-someval", ... ] 
0

になりますちょうどあなたが提供するスクリーンショットに基づいて、あなたが含まれているオブジェクトの配列を持っています月オブジェクト。その配列をループして、月とその情報の配列にマップすることができます。それは、より管理しやすい月を扱うことになります。

var months = this.state.months.forEach(function(item) { 
    return { month: item.month, p1: item.p1, p2: item.p2 }; 
}); 

あなたは月とそのデータにアクセスします。

console.log('Month is ', months[0].month, '. p1 object data is ', months[0].p1 '. and p2 object data is ', months[0].p2); 
関連する問題