0

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

array = [[[]]];

或者

array = [][][];

或者

array = []; array[] = []; array[][] = [];

例如不会工作。(控制台会说第二个数组是“未定义”而不是对象,或者对于第二个和第三个示例给出解析错误)。

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

请帮忙?

4

2 回答 2

3

JavaScript 是动态类型的。只需将数组存储在数组中。

function loadRow() {
    return [1, 2, 3];
}

var array = [];
array.push(loadRow());
array.push(loadRow());
console.log(array[1][2]); // prints 3
于 2013-05-24T15:49:05.577 回答
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;
}
于 2013-05-24T15:53:19.303 回答