我一直试图找到一种相当简洁的方法来设置一个空的多维JavaScript数组的维度,但到目前为止还没有成功.
首先,我尝试使用初始化一个空的10x10x10数组var theArray = new Array(10, 10 10),但相反,它只创建了一个包含3个元素的1维数组.
我已经弄清楚如何使用嵌套的for循环初始化一个空的10x10x10数组,但以这种方式编写数组初始化器非常繁琐.使用嵌套for循环初始化多维数组可能非常繁琐:是否有更简洁的方法在JavaScript中设置空多维数组的维度(具有任意多个维度)?
//Initializing an empty 10x10x10 array:
var theArray = new Array();
for(var a = 0; a < 10; a++){
theArray[a] = new Array();
for(var b = 0; b < 10; b++){
theArray[a][b] = new Array();
for(var c = 0; c < 10; c++){
theArray[a][b][c] = 10
}
}
}
console.log(JSON.stringify(theArray));
Run Code Online (Sandbox Code Playgroud) 我想了解这背后的原因:
var a = new Array(3);
var b = a.map(function () {
return 'b';
});
Run Code Online (Sandbox Code Playgroud)
结果是
A: [ , , ]
b: [ , , ]
当我期望b导致['b', 'b', 'b'].
在进一步的调查中,我发现如果我这样做a.push('a'),我会有[, , , 'a'].
并且在地图功能之后,b将成为[, , , 'b'].
这里发生了什么?为什么这些分配的单元格的行为与初始化不同?我最初期望这样做,如果它是一个数组文字,[undefined, undefined, undefined].map(fn)