2014-02-12 48 views
0

奇怪的是,我下面的JS代碼提醒爲空。JavaScript關聯數組(字典)不工作

// Used as Dictionary: 
    var dict = new Array(); 
    dict['STAR'] = "star"; 
    dict['MOUTH'] = "mouth"; 
    dict['HAND'] = "hand"; 
    alert(dict); 
    alert(dict("MOUTH")); 

有什麼建議嗎?


P.S.謝謝大家!我知道哪裏錯了!alert(dict(「MOUTH」)); - 應該警惕(dict [「MOUTH」]);

+5

我的建議,學習JavaScript。 –

+0

字典不是一個函數;使用字典['口]' – ppoliani

+0

問題不是'字典'。使用數組作爲哈希是非常可怕的,這看起來像你一直在做... – bgusach

回答

1

在JS中沒有關聯數組這樣的事情。

你可以做同樣的一個對象:

var dict = {}; 
dict['STAR'] = "star"; 
dict['MOUTH'] = "mouth"; 
dict['HAND'] = "hand"; 
alert(dict); 
alert(dict["MOUTH"]); 

或者,如果密鑰是有效的變量名,你可以把它們寫爲屬性:

dict.star = "star"; 
dict.mouth = ...; 

或者使用直接的文字:

var dict = { 
    star: "star", 
    mouth: "mouth", 
    hand: "hand" 
}; 

事實上,在JS中沒有100%等同於Dictionary/associative數組,因爲即使是空對象h自己的方法(例如hasOwnProperty),這意味着你可以覆蓋對象的「本地」元素。儘管如此,還是有一些解決方法,比如使用Object.create(null)這是一個完全空的對象,但在所有瀏覽器中都不可用,或者使用帶前綴的getter和setter。

+0

'alert(dict [「MOUTH」]);'。 –

+0

你有沒有低估我呢?......「和」是JS中的字符串分隔符。 – bgusach

+0

字典不是一個函數! – ppoliani

0
// Used as Dictionary: 
var dict = {}; 
dict['STAR'] = "star"; 
dict['MOUTH'] = "mouth"; 
dict['HAND'] = "hand"; 
alert(dict); 
alert(dict["MOUTH"]); 
0

使用這樣的:

var dict = { 
    STAR: "star", 
    MOUTH: "mouth", 
    HAND: "hand" 
}; 

alert(dict); 
alert(dict.MOUTH); 
+0

想補充一點解釋嗎? – johnchen902