Javascript 4D数组

tru*_*ktr 2 javascript arrays function multidimensional-array

任何人都有创建4D阵列的功能(或任何数量的维度)?

我想调用这个函数,之后我可以做类似的事情 arr[3][2][23][12] = "awesome";

Mat*_*y F 5

function make(dim, lvl, arr) {
  if (lvl === 1) return [];
  if (!lvl) lvl = dim;
  if (!arr) arr = [];
  for (var i = 0, l = dim; i < l; i += 1) {
    arr[i] = make(dim, lvl - 1, arr[i]);
  }
  return arr;
}

var myMultiArray = make(4);
Run Code Online (Sandbox Code Playgroud)

更新:您可以指定第一个参数中的级别应该有多深,以及第二个参数中的级别.例如:

var myMultiArray = make(64, 4);
Run Code Online (Sandbox Code Playgroud)

这将允许您设置和获取以下格式:

myMultiArray[X][X][X][X] = ....
Run Code Online (Sandbox Code Playgroud)

但X必须始终小于64. myMultiArray[X][70][X][X]例如,您无法设置,因为myMultiArray[X][70]尚未定义

注意 - 运行make(64, 4)速度非常慢 - 您正在创建64 ^ 4个空数组元素(即16,777,216).

更新2:您可以将最后一个值作为任何数字或字符串.IE浏览器.myMultiArray[X][X][X][Y]其中X <64和Y可以是任何东西.

该算法也进行了优化,再试一次.


Jas*_*ary 5

又快又脏:

var arr = [[[[[]]]]];
Run Code Online (Sandbox Code Playgroud)

看看http://jsfiddle.net/MJg9Y/

注意:您仍需要初始化每个维度.上面为4维数组创建了基础arr[0].