tru*_*ktr 2 javascript arrays function multidimensional-array
任何人都有创建4D阵列的功能(或任何数量的维度)?
我想调用这个函数,之后我可以做类似的事情 arr[3][2][23][12] = "awesome";
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可以是任何东西.
该算法也进行了优化,再试一次.
又快又脏:
var arr = [[[[[]]]]];
Run Code Online (Sandbox Code Playgroud)
注意:您仍需要初始化每个维度.上面为4维数组创建了基础arr[0].