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

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


当前回答

使用数组推导式

在JavaScript 1.7及更高版本中,您可以使用数组推导式来创建二维数组。您还可以在填充数组时过滤和/或操作条目,而不必使用循环。

var rows = [1, 2, 3];
var cols = ["a", "b", "c", "d"];

var grid = [ for (r of rows) [ for (c of cols) r+c ] ];

/* 
         grid = [
            ["1a","1b","1c","1d"],
            ["2a","2b","2c","2d"],
            ["3a","3b","3c","3d"]
         ]
*/

您可以创建任何n x m的数组,并通过调用填充默认值

var default = 0;  // your 2d array will be filled with this value
var n_dim = 2;
var m_dim = 7; 

var arr = [ for (n of Array(n_dim)) [ for (m of Array(m_dim) default ]] 
/* 
         arr = [
            [0, 0, 0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0, 0, 0],
         ]
*/

更多示例和文档可以在这里找到。

请注意,这还不是一个标准功能。

其他回答

我的方法与@Bineesh的答案非常相似,但采用了更普遍的方法。

你可以这样声明双数组:

var myDoubleArray = [[]];

并以以下方式存储和访问内容:

var testArray1 = [9,8]
var testArray2 = [3,5,7,9,10]
var testArray3 = {"test":123}
var index = 0;

myDoubleArray[index++] = testArray1;
myDoubleArray[index++] = testArray2;
myDoubleArray[index++] = testArray3;

console.log(myDoubleArray[0],myDoubleArray[1][3], myDoubleArray[2]['test'],) 

这将打印预期的输出

[ 9, 8 ] 9 123

要在javaScript中创建一个2D数组,我们可以先创建一个数组,然后添加数组作为它的元素。此方法将返回具有给定行数和列数的2D数组。

function Create2DArray(rows,columns) {
   var x = new Array(rows);
   for (var i = 0; i < rows; i++) {
       x[i] = new Array(columns);
   }
   return x;
}

使用如下所示的方法创建Array。

var array = Create2DArray(10,20);

有人说这不可能是因为二维数组实际上就是数组的数组。这里的其他注释提供了在JavaScript中创建二维数组的完全有效的方法,但最纯粹的观点是,你有一个一维对象数组,每个对象都是由两个元素组成的一维数组。

这就是观点冲突的原因。

Javascript不支持二维数组,相反,我们将一个数组存储在另一个数组中,并根据您想访问的数组的位置从该数组中获取数据。记住数组编号从0开始。

代码示例:

/* Two dimensional array that's 5 x 5 

       C0 C1 C2 C3 C4 
    R0[1][1][1][1][1] 
    R1[1][1][1][1][1] 
    R2[1][1][1][1][1] 
    R3[1][1][1][1][1] 
    R4[1][1][1][1][1] 
*/

var row0 = [1,1,1,1,1],
    row1 = [1,1,1,1,1],
    row2 = [1,1,1,1,1],
    row3 = [1,1,1,1,1],
    row4 = [1,1,1,1,1];

var table = [row0,row1,row2,row3,row4];
console.log(table[0][0]); // Get the first item in the array

我必须使一个灵活的数组函数添加“记录”到它,因为我需要,并能够更新它们,做任何计算e需要在我把它发送到数据库进行进一步处理。下面是代码,希望能有所帮助:)。

function Add2List(clmn1, clmn2, clmn3) {
    aColumns.push(clmn1,clmn2,clmn3); // Creates array with "record"
    aLine.splice(aPos, 0,aColumns);  // Inserts new "record" at position aPos in main array
    aColumns = [];    // Resets temporary array
    aPos++ // Increments position not to overlap previous "records"
}

请随意优化和/或指出任何错误:)