我一直在网上阅读,有些地方说不可能,有些人说是,然后举个例子,其他人反驳这个例子,等等。
如何在 JavaScript 中声明一个二维数组?(假设有可能)
我将如何访问其成员?(
myArray[0][1]或myArray[0,1]?)
我一直在网上阅读,有些地方说不可能,有些人说是,然后举个例子,其他人反驳这个例子,等等。
如何在 JavaScript 中声明一个二维数组?(假设有可能)
我将如何访问其成员?(myArray[0][1]或myArray[0,1]?)
var items = [
  [1, 2],
  [3, 4],
  [5, 6]
];
console.log(items[0][0]); // 1
console.log(items[0][1]); // 2
console.log(items[1][0]); // 3
console.log(items[1][1]); // 4
console.log(items);
您只需将数组中的每个项目设为一个数组。
var x = new Array(10);
for (var i = 0; i < x.length; i++) {
  x[i] = new Array(3);
}
console.log(x);
与 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)]
Array.from(Array(2), () => new Array(4))
2和4分别是第一维和第二维。
我们正在使用Array.from,它可以采用类似数组的参数和每个元素的可选映射。
Array.from(arrayLike[, mapFn[, thisArg]])
var arr = Array.from(Array(2), () => new Array(4));
arr[0][0] = 'foo';
console.info(arr);
可以使用相同的技巧来创建包含 1...N 的 JavaScript 数组
n = 10,000)Array(2).fill(null).map(() => Array(4))
性能下降的原因是我们必须将第一个维度值初始化为 run .map。请记住,Array在您通过.fill或直接值分配对其进行排序之前,  不会分配位置。
var arr = Array(2).fill(null).map(() => Array(4));
arr[0][0] = 'foo';
console.info(arr);
这是一种看似正确但存在问题的方法。
 Array(2).fill(Array(4)); // BAD! Rows are copied by reference
虽然它确实返回了显然需要的二维数组 ( [ [ <4 empty items> ], [ <4 empty items> ] ]),但有一个问题:第一维数组已通过引用复制。这意味着 aarr[0][0] = 'foo'实际上会更改两行而不是一行。
var arr = Array(2).fill(Array(4));
arr[0][0] = 'foo';
console.info(arr);
console.info(arr[0][0], arr[1][0]);
Javascript 只有一维数组,但正如其他人指出的那样,您可以构建数组数组。
以下函数可用于构造固定维度的二维数组:
function Create2DArray(rows) {
  var arr = [];
  for (var i=0;i<rows;i++) {
     arr[i] = [];
  }
  return arr;
}
列数并不重要,因为在使用数组之前不需要指定数组的大小。
然后你可以打电话:
var arr = Create2DArray(100);
arr[50][2] = 5;
arr[70][5] = 7454;
// ...