2010-06-22 38 views
3

關聯數組,我想給一個變量傳遞到我的monthHash變量這裏的關鍵是:JavaScript的可變

var monthHash = new Array(); 
    monthHash["JAN"] = "Jan"; 
    monthHash["FEB"] = "Feb"; 
    ... 
    monthHash["NOV"] = "Nov"; 
    monthHash["DEV"] = "Dec"; 

,這樣我可以做到這一點:

alert(monthHash[the_variable]); 

而不是使用開關箱要經過這個。

當我嘗試,但是,我得到一個錯誤。有沒有一種方法,我可以有一個變量指示JavaScript中的密鑰的字符串標識符?

+2

什麼是錯誤? – 2010-06-22 21:04:09

回答

6

,我能看到你的代碼可以生成時the_variable未定義的錯誤是唯一的情況下(在那裏你會得到a ReferenceError)。但是,Array不意味着用於鍵/值對。你應該使用一個對象來代替:

var monthHash = {}; 
monthHash['JAN'] = 'Jan'; 
monthHash['FEB'] = 'Feb'; 
monthHash['NOV'] = 'Nov'; 
monthHash['DEC'] = 'Dec'; 

var the_variable = 'NOV'; 

alert(monthHash[the_variable]); // alerts 'Nov' 
2

聲明它是一個對象:

var monthHash = {}; 
monthHash["JAN"] = ..; 

var monthHash = {jan: "...", ...} 

var x = "jan"; 
alert(monthHash[x]); 
+0

正確 - 請參閱很多關於爲什麼js數組不是關聯數組的文章(http://www.quirksmode.org/js/associative.html),而是使用Object。 (但我會使用「var monthHash = new Object();) – dkretz 2010-06-22 21:25:50