我试图创建一个三维数组,但找不到一个简单的方法。
array = [[[]]];
或
array = [][][];
或
array = []; array[] = []; array[][] = [];
例如,不起作用。 (控制台说第二个数组是'未定义'而不是一个对象,或者对于第二个和第三个示例给出一个解析错误。)
我也不能对信息进行硬编码,因为我不知道数组的索引和内容是什么(它们是“动态”创建的,取决于用户的输入。例如,第一个数组可能有索引4192)。在分配它们之前,我可能必须创建每个数组,但如果有一种更简单的方法来定义三维数组,它将会更容易和更快。 (总共会有大约2个阵列,25个子阵列和800个子阵列)每毫秒可以挽救生命,可以这么说。
请帮忙吗?
答案 0 :(得分:3)
JavaScript是动态类型的。只需将数组存储在数组中。
function loadRow() {
return [1, 2, 3];
}
var array = [];
array.push(loadRow());
array.push(loadRow());
console.log(array[1][2]); // prints 3
答案 1 :(得分:1)
由于javascript中的数组不是真正的数组,因此实际上并不存在多维数组。在javascript中,你只需要一个数组中的数组。您可以静态定义数组:
var a = [
[1,2,3],
[4,5,6],
[7,8,9]
];
或像这样动态:
var d = [];
var d_length = 10;
for (var i = 0;i<d_length;i++) {
d[i] = [];
}
<强>更新强>
您还可以使用一些辅助函数:
function ensureDimensions(arr,i,j,k) {
if(!arr[i]) {
arr[i] = [];
}
if(!arr[i][j]) {
arr[i][j] = [];
}
}
function getValue(arr,i,j,k) {
ensureDimensions(i,j,k);
return arr[i][j][k];
}
function setValue(arr,newVal,i,j,k) {
ensureDimensions(i,j,k);
arr[i][j][k] = newVal;
}