2011-04-29 191 views
3

我是javascript的新手,我被某人告知,他說「嚴格講,javascript沒有多維數組和關聯數組」。但在一本書中,我看到以下內容javascript多維數組和關聯數組

var my_cars=Array(); 
my_cars["cool"]="Mustang"; 

$a=Array(Array(0,1),2); 

那麼他的意見形式是錯的?我對嗎?

回答

5

JavaScript有數組,其元素可以是其他數組。

但是,JavaScript有Object與屬性,而不是關聯數組。

Buy a better book

  1. []Array()好得多。另外,爲什麼不明確實例化一個Array對象,然後依靠Array返回一個新對象?
  2. 該示例在Array上設置屬性cool
  3. 爲什麼$a印?爲什麼沒有new運營商呢?
+1

是,JS:對於任何不僅僅是使用Javascript進行測試的人來說,TGP是必不可少的讀物。另外,MDC的JS參考是一個很好的資源。請參閱,例如:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array#section_20 – entropo 2011-04-29 01:34:16

2

該行:my_cars["cool"]="Mustang";實際上並未向數組中添加值。它實際上爲對象my_cars增加了一個新的屬性和值。下面的代碼也將工作一樣:

var my_cars = new Function(); 
my_cars["cool"]="Mustang"; 
alert(my_cars["cool"]); 

var c = new Object(); 
c["cool"]="Corvette"; 
alert(c["cool"]); 

要理解它是如何工作的,你可以檢查出my blog post on arrays and maps

順便說一句,正如@alex所說,買一本新書。

3

所有的JavaScript多維數組的解釋似乎很令人費解,幾乎後我偶然發現這個簡單的例子來研究時間:

var myArray = new Array(); 
myArray['row1'] = { 'col1':'BLARGH!!!', 'col2':'HONK!!!!' } 
myArray['row2'] = { 'col1':'FOO!!!', 'col2':'BAR!!!!' } 
myArray['row3'] = { 'col1':'FOUR!!!', 'col2':'GREGS!!!' } 

document.write(myArray['row2']['col1'] + " - " + myArray['row3']['col2']); 
//will output: FOO!!! - GREGS!! 

我在這裏找到:http://moblog.bradleyit.com/2009/06/create-multidimensional-associative.html

+0

感謝您提到它,非常好!我測試它更多,這是如何做一個非關聯︰var myArray = new Array(); myArray [0] = {0:1};警報(myArray的[0] [0]);' – Melsi 2011-10-26 17:56:09