2016-09-14 79 views
-2

循環我的JSON數據:問題通過JSON數據在Javascript

var menu = {"parent":[ 
{ 
    "id": 1, 
    "name": "Information", 
    "child": [ 
    { 
     "id": 1000, 
     "name": "Example" 
    } 
    ] 
}, 
{ 
    "id": 2, 
    "name": "Something" 
}, 
{ 
    "id": 3, 
    "name": "Something else", 
    "child": [ 
    { 
     "id": 2000, 
     "name": "Yay" 
    } 
    ] 
} 

我的javascript:

$(document).ready(function() { 


var xhr = new XMLHttpRequest(); 

xhr.open("GET", "https://sable-belief-1704.justapis.io/parentmenu", false); 
xhr.send(); 

var responseJson = JSON.parse(xhr.response); 
var responseParent = responseJson.parent; 

for(var i in responseParent) { 

    if (responseParent[i].hasOwnProperty('child')) 
    { 
     console.log(responseParent[i]); 
     console.log(responseParent[i].child[i]); 
    } 
} 
}); 

我在這裏難住了。此代碼適用於具有子對象的第一個對象。但是當它循環到具有子對象的第二個對象時,它將運行第一個console.log,我可以看到帶有子對象的父對象,但出於某種奇怪的原因,在第二個console.log中,我試圖記錄子對象時,它只會返回undefined。對我來說這似乎很奇怪,因爲考慮到當我登錄父對象時子對象就在那兒。

下面是一個的jsfiddle可以運行,看看我的意思是:https://jsfiddle.net/4rcy66r7/

任何想法?

+0

爲什麼你正在使用同步請求?爲什麼不[[.getJSON()'](http://api.jquery.com/jquery.getjson/)? – Andreas

回答

4

此:

console.log(responseParent[i]); 
    console.log(responseParent[i].child[i]); 
             ^^^ 

您使用的是相同的指數兩個完全獨立的陣列。所有這些child數組只有一個對象在它們中,總是在索引0,但你正在嘗試索引[1],[2],[3]等......根本不存在。

應該

console.log(responseParent[i].child[0]); 
             ^--- 

代替。

+0

如果我每個家長只有一個孩子,那該怎麼辦,但如果我有多個孩子呢?我需要索引一些東西?你會如何推薦這樣做? – user1289451

+0

那麼你需要兩個循環。 –

+0

我只是在等待你的回覆時才明白這一點。我需要對子對象進行第二次循環索引。感謝您轉向正確的方向! – user1289451