2013-03-16 37 views
0

,我想在我的JSON陣列相同的ID與JavaScript製成在JSON數組(JavaScript)的同一ID Retrive對象

var Array = {    
    "1": {"text": "Number one", "time": "16 03 13"}, 
    "1": {"text": "Number two", "time": "14 03 13"}, 
    "1": {"text": "Number three", "time": "13 03 13"}, 
    "2": {"text": "Number one", "time": "13 03 13"}, 
}; 

我用這種方式試圖以檢索對象,但很明顯,它表明我只有第一個結果(第一個)

var get = Array[1]; 
alert(get.text); 

我想過一個循環,我該怎麼辦?

+1

大自然的ID(或鍵)應該是唯一的,這就是它,它** **標識的東西... – elclanrs 2013-03-16 11:09:10

回答

8
  • 請勿使用Array作爲變量名稱。
  • 對象鍵不能重複。如果你這樣做,只有最新的條目被送到該鍵。其他人被丟棄。在你的情況下,只有第三個「1」可以通過「1」鍵進入。
  • 你需要的是一個數組,而不是對象

你需要這樣的:

var myArray = [    
    {"id" : 1, "text": "Number one", "time": "16 03 13"}, //index 0 
    {"id" : 1, "text": "Number two", "time": "14 03 13"}, //index 1 
    {"id" : 1, "text": "Number three", "time": "13 03 13"}, //index 2 
    {"id" : 2, "text": "Number one", "time": "13 03 13"}  //index 3 
]; 

var i; 

for(i=0;i<myArray.length;i++){ 
    if(myArray[i].id === 1){ 
    console.log(myArray[i].text); 
    } 
} 

這裏的另一種方法,這需要重組數據。如果您的ID爲1的條目具有多個值,則可以在每個鍵下面放置一個數組。

var myArray = {    
    "1" : [ 
    {"text": "Number one", "time": "16 03 13"}, //index 0 
    {"text": "Number two", "time": "14 03 13"}, //index 1 
    {"text": "Number three", "time": "13 03 13"} //index 2 
    ], 
    "2" : [ 
    {"text": "Number one", "time": "13 03 13"} //index 0 
    ] 
}; 

var ones = myArray['1']; 

for(i=0;i<ones.length;i++){ 
    console.log(ones[i].text); 
} 

另一種方法是使用Array.prototype.filter

var myArray = [    
    {"id" : 1, "text": "Number one", "time": "16 03 13"}, //index 0 
    {"id" : 1, "text": "Number two", "time": "14 03 13"}, //index 1 
    {"id" : 1, "text": "Number three", "time": "13 03 13"}, //index 2 
    {"id" : 2, "text": "Number one", "time": "13 03 13"}  //index 3 
]; 

//create an array containing only those with id of 1 
var filtered = myArray.filter(function(val,i,arr){ 
    return val.id === 1; 
}); 

for(i=0;i<filtered.length;i++){ 
    console.log(filtered[i].text); 
} 
+0

感謝您的快速回復,但通過這種方式,我無法獲得任何ID。 例如,如果我只想獲取ID爲1的文本? – Alberto 2013-03-16 11:13:33

+0

有沒有簡單的方法來做到這一點? {「text」:「Number one」,「id」:「1」}, {「text」:「Number two」,「id」:「1」}, {「text」:「Number three 「,」id「:」1「}, {」text「:」Number one「,」id「:」2「}' 我可以只用這種方式顯示id 1嗎? – Alberto 2013-03-16 11:18:27

+0

@Alberto用更多的選擇更新了答案 – Joseph 2013-03-16 11:18:55