2012-09-24 44 views

回答

8

JS對象中的鍵必須是唯一的。

會發生什麼情況,是:

var obj = { 
    key : value1 
} 

obj['key']value1

隨後的聲明key : value2覆蓋您的上一個。


可能的解決問題的方法:

var obj = { 
    key : [value1, value2] 
} 

for (var i in obj) 
{ 
    if (obj[i] instanceof Array) 
    { 
     for (var k; k < obj[i].length; k++) 
     { 
      console.log(obj[i][k]) 
     } 
    } 
    else 
    { 
     console.log(obj[i]); 
    } 
} 

另一個,可能更優雅,解決辦法是改變你儲存像這樣你的數據:

var obj = [ 
    { key : 'SomeKey'  , value : 'foo' }, 
    { key : 'SomeKey'  , value : 'bar' }, 
    { key : 'SomeOtherKey', value : 'baz' } 
]; 

這顯然允許使用相同密鑰的多個條目。查詢可以沿着這些線進行:

values = []; 
for (var i = 0; i < obj.length; i++) 
{ 
    if (obj[i].key === 'SomeKey') 
    { 
     values.push(obj[i].value); 
    } 
} 

console.log(values); 
+0

謝謝你我錯了) – WHITECOLOR

+0

是的,謝謝你,我是這麼做的。 – WHITECOLOR

2

這是不可能的。 正如聲明:

var obj = { key: value1, key: value2} 

最初obj.key設置爲value1,在第二分配value1改寫爲value2,所以,obj.key現在value2
所以你不能訪問初始值。

+0

好的,謝謝你,我的愚蠢的錯誤)) – WHITECOLOR

+0

不客氣的人。 「爲了人類而犯錯誤」:) – saji89

+0

請將答案標記爲解決方案,將問題標記爲已解決。 – saji89

相關問題