JavaScript创建多维数组的语法

5

今天我听说在js中可以使用以下语法创建多维数组:

var a = new Array(3,3);
a[2][2] = 2;
alert(a[2][2])

然而,这在Opera浏览器中无法正常工作。我有什么地方做错了吗?

2
这就是为什么不要使用 new Array() 的原因之一。如果你只传递一个参数,那么确实会将数组的长度设置为该参数。但是如果你传递多个参数,则会生成包含这些元素的数组。没有必要使用 Array(),而是应该使用字面量表示法 [] - Felix Kling
3个回答

7
是的,你有些地方是错的。var a = new Array(3,3);var a = [3,3];是等效的。它们都创建了一个数组,其中包含两个元素:数字3和数字3
数组构造函数是JavaScript语言设计中最糟糕的部分之一。给定单个值,它确定数组的长度。给定多个值,它使用这些值来初始化数组。
总是使用var a = [];语法。它是一致的(而且更短、更易读)。
没有用于创建数组的数组的快捷语法。您必须单独构建每个数组。
var a = [ 
          [1,2,3],
          [4,5,6],
          [7,8,9]
         ];

我相信OP试图使用那种语法创建一个多维数组。编辑:这个评论已经不相关了。 - user113716
你是对的。我被告知它创建了一个多维数组。感谢你清晰明了的回答。 - Dan

2
您发布的代码创建了一个由两个整数组成的数组。您现在尝试将整数视为数组。
mv = new Array();
mv[0] = new Array();
mv[0][0] = "value1-1";
mv[0][1] = "value1-2";

mv[1] = new Array();
mv[1][0] = "value2-1";
mv[1][1] = "value2-2";

无法直接实例化多维数组。


在第二个代码块中,你是不是指的是 mv[1][0]mv[1][1] - jlewkovich
唯一解决我的三维问题的脚本...谢谢。 - JanBorup

0
你想要创建一个数组的数组,但是你却只创建了一个包含两个元素的数组:
var a = new Array(3,3);
// a = [3,3]

如果你想创建一个多维数组,你必须考虑到数组的数组。
这样,一个二维数组(或矩阵)可以定义为:
var a = [[],[]];//or var a = new Array([],[]);
//or if you want to initialize the matrix : 
var b = [
    [1,2],
    [3,4]
];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接