【发布时间】:2011-08-15 04:13:23
【问题描述】:
我是 javascript 的新手,有人告诉我,他说“严格来说,javascript 没有多维数组和关联数组”。但在一本书中,我看到了以下内容
var my_cars=Array();
my_cars["cool"]="Mustang";
$a=Array(Array(0,1),2);
所以他的意见是错误的?我说的对吗?
【问题讨论】:
标签: javascript
我是 javascript 的新手,有人告诉我,他说“严格来说,javascript 没有多维数组和关联数组”。但在一本书中,我看到了以下内容
var my_cars=Array();
my_cars["cool"]="Mustang";
$a=Array(Array(0,1),2);
所以他的意见是错误的?我说的对吗?
【问题讨论】:
标签: javascript
JavaScript 有数组,它们的元素可以是其他数组。
但是,JavaScript 有 Objects 属性,而不是关联数组。
[] 比 Array() 要好得多。另外,为什么不显式实例化 Array 对象,然后依靠 Array 返回一个新对象?Array 上设置属性cool。$a 印记?为什么又没有new 运算符了?
【讨论】:
对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
【讨论】:
var myArray = new Array(); myArray[0] = {0:1}; alert(myArray[0][0]);
这行: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 所说,买一本新书。
【讨论】: