JavaScript的4D阵列 [英] Javascript 4D arrays

查看:121
本文介绍了JavaScript的4D阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

任何人都有一个函数来创建4D阵列(或任何与此有关的维数)?

我想调用的函数,在那之后我可以这样做改编[3] [2] [23] [12] =真棒;


解决方案

 功能使(变暗,LVL,编曲){
  如果(LVL === 1)返回[];
  如果(!LVL)LVL =暗淡;
  如果(ARR!)ARR = [];
  对于(VAR I = 0,1 =暗淡; I< L,I + = 1){
    改编[I] =令(偏暗,LVL - 1,编曲[I]);
  }
  返回ARR;
}VAR myMultiArray =使(4);

更新::您可以指定一个水平应该有多深的第一个参数,多少在第二个层次。例如:

  VAR myMultiArray =使(64,4);

这将允许您设置和格式获得:

  myMultiArray [X] [X] [X] [X] = ....

不过,X必须始终小于64,则不能设置 myMultiArray [X] [70] [X] [X] 例如,因为 myMultiArray [X] [70] 尚未定义

注意 - 运行制作(64,4)是非常缓慢 - 要创建64 ^ 4空数组元素(即16777216)

更新2::您可以逃脱的最后一个值的任何数字或字符串。 IE浏览器。 myMultiArray [X] [X] [X] [Y] 其中X; 64和Y可以是任何东西。

该算法进行了优化,以及,给它一个去。

Anyone have a function to create 4D arrays (or any number of dimensions for that matter)?

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] = ....

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

Note- running make(64, 4) is awfully slow - you are creating 64 ^ 4 empty array elements (i.e. 16,777,216).

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆