创建多维数组(JS)

时间:2013-05-24 15:46:05

标签: javascript arrays

我试图创建一个三维数组,但找不到一个简单的方法。

array = [[[]]];

array = [][][];

array = []; array[] = []; array[][] = [];
例如,

不起作用。 (控制台说第二个数组是'未定义'而不是一个对象,或者对于第二个和第三个示例给出一个解析错误。)

我也不能对信息进行硬编码,因为我不知道数组的索引和内容是什么(它们是“动态”创建的,取决于用户的输入。例如,第一个数组可能有索引4192)。在分配它们之前,我可能必须创建每个数组,但如果有一种更简单的方法来定义三维数组,它将会更容易和更快。 (总共会有大约2个阵列,25个子阵列和800个子阵列)每毫秒可以挽救生命,可以这么说。

请帮忙吗?

2 个答案:

答案 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;
}