我一直在网上阅读,一些地方说这是不可能的,一些地方说这是可能的,然后给出一个例子,另一些地方反驳这个例子,等等。
如何在JavaScript中声明一个2维数组?(假设这是可能的) 我如何访问它的成员?(myArray[0][1] or myArray[0,1]?)
我一直在网上阅读,一些地方说这是不可能的,一些地方说这是可能的,然后给出一个例子,另一些地方反驳这个例子,等等。
如何在JavaScript中声明一个2维数组?(假设这是可能的) 我如何访问它的成员?(myArray[0][1] or myArray[0,1]?)
当前回答
Array.from({length: rows}).map(e => new Array(columns));
其他回答
您可以分配一个行数组,其中每一行都是相同长度的数组。或者你也可以用rows*columns元素分配一个一维数组,并定义方法将行/列坐标映射到元素索引。
无论选择哪种实现,如果将其包装在对象中,则可以在原型中定义访问器方法,从而使API易于使用。
类似于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)]
为Java Script创建n维矩阵数组,填充初始默认值为0。
function arr (arg, def = 0){
if (arg.length > 2){
return Array(arg[0]).fill().map(()=>arr(arg.slice(1)));
} else {
return Array(arg[0]).fill().map(()=>Array(arg[1]).fill(def));
}
}
// Simple Usage of 4 dimensions
var s = arr([3,8,4,6])
// Use null default value with 2 dimensions
var k = arr([5,6] , null)
要在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);
数组的行和列的大小只有在运行时才知道,那么下面的方法可以用来创建一个动态的2d数组。
var num = '123456'; 变量行 = 3;运行时已知 var col = 2;运行时已知 是 i = 0; var array2D = [[]]; for(var r = 0; r < row; ++r) { array2D[r] = []; for(var c = 0; c < col; ++c) { array2D[r][c] = num[i++]; } } console.log(array2D); [[ '1', '2' ], [ '3', '4' ], [ '5', '6' ]] console.log(array2D[2][1]);6