Javascript 4D 数组 [英] Javascript 4D arrays
问题描述
有人有创建 4D 数组(或任何数量的维度)的函数吗?
Anyone have a function to create 4D arrays (or any number of dimensions for that matter)?
我想调用这个函数,然后我可以做类似arr[3][2][23][12] = "awesome";
I'd like to call the function, then after that I can do something like 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);
更新:您可以在第一个参数中指定级别的深度,以及第二个参数中的级别数.例如:
Update: you can specify how deep a level should be in the first parameter, and how many levels in the second. e.g.:
var myMultiArray = make(64, 4);
这将允许您设置和获取此格式:
This will allow you to set and get in this format:
myMultiArray[X][X][X][X] = ....
但 X 必须始终小于 64.例如,您不能设置 myMultiArray[X][70][X][X]
,因为 myMultiArray[X][70]
尚未定义
But X must always be less than 64. You cannot set myMultiArray[X][70][X][X]
for example, because myMultiArray[X][70]
has not yet been defined
注意 - 运行 make(64, 4)
非常慢 - 您正在创建 64 ^ 4 个空数组元素(即 16,777,216).
Note- running make(64, 4)
is awfully slow - you are creating 64 ^ 4 empty array elements (i.e. 16,777,216).
更新 2:您可以使用任意数字或字符串形式的最后一个值.IE.myMultiArray[X][X][X][Y]
其中 X <64 和 Y 可以是任何东西.
Update 2: you can get away with the last value as any number or string. Ie. myMultiArray[X][X][X][Y]
where X < 64 and Y can be anything.
算法也优化了,再试一次.
The algorithm has been optimised as well, give it another go.
这篇关于Javascript 4D 数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!