2017-09-24 130 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循環內對陣列使用for-in循環?

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);