我一直在网上阅读,一些地方说这是不可能的,一些地方说这是可能的,然后给出一个例子,另一些地方反驳这个例子,等等。

如何在JavaScript中声明一个2维数组?(假设这是可能的) 我如何访问它的成员?(myArray[0][1] or myArray[0,1]?)


当前回答

一个简单的例子:

var blocks = [];

blocks[0] = [];

blocks[0][0] = 7;

其他回答

在一些注释中提到了这一点,但是使用array .fill()将有助于构造一个2-d数组:

function create2dArr(x,y) {
    var arr = [];
    for(var i = 0; i < y; i++) {
        arr.push(Array(x).fill(0));
    }
    return arr; 
}

这将在返回的数组中生成一个长度为x, y的数组。

一个简单的例子:

var blocks = [];

blocks[0] = [];

blocks[0][0] = 7;

只需将数组中的每个项设置为数组。

var x = new Array(10); For (var I = 0;I < x.length;我+ +){ x[i] = new Array(3); } console.log (x);

你也可以创建一个函数来创建一个2D数组,就像这样:

var myTable = [];

function createArray(myLength) {
    myTable = new Array(myLength);
    var cols, rows;
    for (cols = 0; cols < myLength; cols++) {
        myTable[cols] = new Array(myLength);
    }
}

您可以使用以下命令调用它,这将为您提供一个10x10的2D数组。

createArray(10);

您还可以使用此方法创建3D数组。

类似于activa的答案,这里有一个创建n维数组的函数:

function createArray(length) {
    var arr = new Array(length || 0),
        i = length;

    if (arguments.length > 1) {
        var args = Array.prototype.slice.call(arguments, 1);
        while(i--) arr[length-1 - i] = createArray.apply(this, args);
    }

    return arr;
}

createArray();     // [] or new Array()

createArray(2);    // new Array(2)

createArray(3, 2); // [new Array(2),
                   //  new Array(2),
                   //  new Array(2)]