2013-07-05 61 views
0

我有一個包含一些鍵/值對的對象。當有一個鍵/值對與另一個鍵/值對共享同一個鍵時,當我控制檯登錄對象時,第一個鍵不會被識別。使用非唯一鍵值對讀取和循環對象

例如:

var test = { 
"same" : 'Value1', 
"same" : 'Value2', 
"different" : 'Value3' 
}; 
console.log(test); 

結果在控制檯爲:

Object { same="Value2", different="Value3"} 

是沒可能看也有類似的鍵名的對象?

我想通過使用這種方法(How do I loop through or enumerate a JavaScript object?)循環對象,但我只能檢索一個共享密鑰的鍵/值對。

回答

1

如果需要,您可以更改JSON的結構嗎? JSON對象不能有重複的鍵。把它想象成一個散列表或字典。根據不同的語言和JSON解析器,你還可以得到一個異常(沒有在Javascript雖然)

在你上面的例子無論是改變它,讓你有獨特的密鑰或更改TI將值像數組:

var test = { 
"same" : ['Value1', 'Value2'] 
"different" : 'Value3' 
}; 
console.log(test); 
+2

或將其更改爲一個鍵/值數組:[{「same」:'Value1'},{「same」:'Value2'},{「different」:'Value3'}]。就像在大多數語言中一樣:對象類似於一個集合,並且一個集合不能包含2個相等的對象。因此,請使用列表:D – Ricola3D

+0

@Yannis感謝您的建議,這將對我的目的有效。 –

+0

很高興我能幫到你。不介意,如果你接受了答案,因爲你發現它有用:) – Yannis

0

一個鍵是唯一標識數組/對象內元素的唯一值。所以,答案是否定的,你不能有兩個具有相同鍵值的元素。

1

一個對象不能有重複的鍵。

因此,您無法從對象中讀取重複鍵的原因是,它們從未添加爲首先在對象中的兩個項目。其中一項將簡單覆蓋另一項。