2011-04-29 190 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