【问题标题】:three-dimensional array in javascriptjavascript中的三维数组
【发布时间】:2017-03-14 13:37:49
【问题描述】:
var a = new Array();
var b  = [1,2,3,4,5,6,7];
for(i in b){a[i] = new Array(new Array());}
a[0][1][2] = Math.random();// error:VM205:1 Uncaught TypeError: Cannot set property '2' of undefined(…)

如何在javascript中使用三维数组?

我的意思是如何像 java 一样使用它。
例如:double a = new double[length][length][length];

如何提前记忆。

【问题讨论】:

  • 你需要用你想要的值来初始化每个数组。没有真正的多维数组可以仅通过声明就被完全分配。
  • 这是因为,new Array 将设置一个长度为 0 的数组。所以a[0][0] 将有一个数组,但a[0][1] 将是undefined。如果您尝试解释您想要达到的目标,我们可以推荐一些东西

标签: javascript


【解决方案1】:

在 Javascript 中,预先实例化变量是没有用的,也没有编译时内存分配之类的东西,因为,嘿,没有编译时间!但是如果你真的想要这样做,它并不像在 Java 中那么简单:

const length = 7;
const range = new Array(length).fill();
const array = range.map(e => range.map(e => range.map(e => e)));

console.log(JSON.stringify(array)); // -> "[[[null,null,null],[null,null,null],[null,null,null]],[[null,null,null],[null,null,null],[null,null,null]],[[null,null,null],[null,null,null],[null,null,null]]]"

其中唯一的一点是,您始终可以确定,只要您停留在 [0, length) 边界内,array[x][y][z] 对于任何 xyz 都不会抛出类型错误。

【讨论】:

    【解决方案2】:

    你可以这样做

    const items = [[[]]] // init 3d array
    
    // assign values
    items[0][0][0] = 0
    items[0][0][1] = 1
    items[0][0][2] = 2
    
    // display
    for (const i of items) {
      for (const j of i) {
        for (const k of j) {
          console.log('k = ', k)
        }
      }
    }

    【讨论】:

    • 我的意思是如何像 java 一样使用它。例如:double a = new double[length][length][length];
    【解决方案3】:

    与 rishat 的答案类似,但长度不同。

    const array1 = Array(2).fill().map(e => Array(4).fill().map(e => Array(3).fill("3").map(e => e)));
    console.log(JSON.stringify(array1));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-07
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多