【问题标题】:Create Three dimensional array and assign value to it in Javascript在Javascript中创建三维数组并为其赋值
【发布时间】:2017-09-14 05:01:40
【问题描述】:

我已经尝试创建 3 维数组并为其赋值,基于creating and parsing a 3D array in javascript? 此处的答案。

var myArr = new Array(new Array(new Array()));

myArr[0][0][0] = "1";
myArr[0][0][1] = "2";
myArr[0][1][0] = "2";
myArr[0][1][1] = "2";
myArr[0][2][0] = "3";
myArr[0][2][1] = "4";

但我明白了

未捕获的类型错误:无法设置未定义的属性“0”。

需要帮助。

谢谢

【问题讨论】:

  • 这里的问题是var myArr = new Array(new Array(new Array())); 转换为myArr[0][0] = [ ],这意味着当尝试访问myArr[0][1] 时,您会得到一个未定义的对象,因为事实上,您从未在该索引处创建过数组。
  • JS没有多维数组,只能用嵌套数组来模拟。这意味着,您必须将每个成员分别定义为一个子数组。
  • @Teemu :你能告诉我怎么做吗?
  • 我相信您可以创建任务所需的嵌套循环,无需任何示例。

标签: javascript arrays


【解决方案1】:

在 javascript 中没有预先启动变量,编译步骤只是提升顶级变量和函数定义,而在 ES6 中,进行静态导入和导出(虽然这还没有原生支持)[Patrick Roberts]。另一种选择是

var myArr = new Array();
myArr[0] = new Array();
myArr[0][0] = new Array();
myArr[0][0][0] = "1";
myArr[0][0][1] = "2";
myArr[0][1] = new Array();
myArr[0][1][0] = "2";
myArr[0][1][1] = "2";
myArr[0][2] = new Array();
myArr[0][2][0] = "3";
myArr[0][2][1] = "4";

【讨论】:

  • 对不起,我的意思是java脚本,正在修复
  • 技术上有一个编译时间,因为它是一种 JIT 编译语言。编译步骤只是简单地提升顶层变量和函数定义,在 ES6 中,进行静态导入和导出(虽然这还没有原生支持)。
  • @Legman 为什么第 3 行没有分号? myArr[0][0] = 新数组()
  • 错字,已修复
【解决方案2】:

你可以这样做(但在 javascript 中创建 3d 数组是更完整的东西。请考虑改变你处理数据的方法):

var myArr = new Array();
myArr[0] = new Array();
myArr[0][0] = new Array();
myArr[0][0][0] = "1";
myArr[0][0][1] = "2";
myArr[0][1] = new Array();
myArr[0][1][0] = "2";
myArr[0][1][1] = "2";
myArr[0][2] = new Array();
myArr[0][2][0] = "3";
myArr[0][2][1] = "4";

console.log(myArr[0][2][0]);

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    相关资源
    最近更新 更多