2017-02-10 123 views
0

基本上我從php獲取json格式的數據。我無法控制我得到的數據。樣本輸出是:通過此json數據循環訪問數組子元素

var Data={"2":[{"name":"Mr Samuel","votes":"11"}],[{"name":"Mrs Clair Cher","votes":"2"}],"3":[{"name":"Mr Madiex","votes":"13"}]}; 

的數據是這樣的:在一個部門,其ID爲2,而Mr.Madiex工作在部門3票是他們得到的選票Mr.Samuel和夫人克萊爾工作他們的表現。現在我需要循環訪問數據,獲取名稱和投票。

$.each(Data, function(departmentid, staffmembers){ 
//departmentid is well captured: 2 and 3. But I am having a hard time going thru each departments staff members: 

    $.each(Data[departmentid], function(index,value){ 
    //here, i expected that Data[departmentid][index].name would give me name but it is undefined. 
    }); 


}); 

我究竟錯過了什麼?

+0

「Data」賦值語法錯誤。請先解決這個問題,這樣我們就可以確定你的JSON數據結構實際上是什麼。 – trincot

+0

@trincot這就是我從php代碼(我無法控制它)得到的。我確實問過後端開發者,但他並不是很幫忙。 var data = {「2」:[{「staffname」:「Samuel Andom先生」,「票數」:「11」},{「staffname」:「克萊爾夫人」,「票數」:「2」}] 3「:[{」staffname「:」Mr Madiex「,」votes「:」13「}]} –

+0

我剛剛嘗試過,並且您的代碼有效。 – trincot

回答

0

校正在原來的問題中的代碼後,似乎工作(假設你已經包括jQuery的):

var Data = { 
 
    "2": [ 
 
     {"name":"Mr Samuel","votes":"11"}, 
 
     {"name":"Mrs Clair Cher","votes":"2"} 
 
    ], 
 
    "3": [ 
 
     {"name":"Mr Madiex","votes":"13"} 
 
    ] 
 
}; 
 

 
$.each(Data, function(departmentid, staffmembers){ 
 
    $.each(Data[departmentid], function(index,value){ 
 
     console.log(Data[departmentid][index].name); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

當然,你還不如用staffmembersvalue參數:

var Data = { 
 
    "2": [ 
 
     {"name":"Mr Samuel","votes":"11"}, 
 
     {"name":"Mrs Clair Cher","votes":"2"} 
 
    ], 
 
    "3": [ 
 
     {"name":"Mr Madiex","votes":"13"} 
 
    ] 
 
}; 
 

 
$.each(Data, function(departmentid, staffmembers){ 
 
    $.each(staffmembers, function(index,value){ 
 
     console.log(value.name); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

謝謝Trincot!精彩。 –