我一直在网上阅读,一些地方说这是不可能的,一些地方说这是可能的,然后给出一个例子,另一些地方反驳这个例子,等等。
如何在JavaScript中声明一个2维数组?(假设这是可能的) 我如何访问它的成员?(myArray[0][1] or myArray[0,1]?)
我一直在网上阅读,一些地方说这是不可能的,一些地方说这是可能的,然后给出一个例子,另一些地方反驳这个例子,等等。
如何在JavaScript中声明一个2维数组?(假设这是可能的) 我如何访问它的成员?(myArray[0][1] or myArray[0,1]?)
当前回答
我发现这段代码适合我:
var map = [
[]
];
mapWidth = 50;
mapHeight = 50;
fillEmptyMap(map, mapWidth, mapHeight);
...
function fillEmptyMap(array, width, height) {
for (var x = 0; x < width; x++) {
array[x] = [];
for (var y = 0; y < height; y++) {
array[x][y] = [0];
}
}
}
其他回答
我发现这段代码适合我:
var map = [
[]
];
mapWidth = 50;
mapHeight = 50;
fillEmptyMap(map, mapWidth, mapHeight);
...
function fillEmptyMap(array, width, height) {
for (var x = 0; x < width; x++) {
array[x] = [];
for (var y = 0; y < height; y++) {
array[x][y] = [0];
}
}
}
这并不是一个真正的答案,但也许根本就不要使用多维数组。你可以很容易地做一个更大的一维数组,并将索引器相乘,并通过该值进行索引!在我看来,那里更干净。
对于一行程序爱好者来说
// creates 8x8 array filed with "0"
const arr2d = Array.from({ length: 8 }, () => Array.from({ length: 8 }, () => "0"))
另一个(来自dmitry_romanov的评论)使用Array().fill()
// creates 8x8 array filed with "0"
const arr2d = Array(8).fill(0).map(() => Array(8).fill("0"))
使用ES6+扩展操作符(“受InspiredJW启发”:))
// same as above just a little shorter
const arr2d = [...Array(8)].map(() => Array(8).fill("0"))
只需将数组中的每个项设置为数组。
var x = new Array(10); For (var I = 0;I < x.length;我+ +){ x[i] = new Array(3); } console.log (x);
我的方法与@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