【问题标题】:Initializing and creating an array in Javascript在 Javascript 中初始化和创建数组
【发布时间】:2021-09-04 20:00:52
【问题描述】:

我想创建一个数组 w[i][j],其中每个 w[i][j] 本身就是一个数字数组。 如果我尝试通过声明一个空数组 w 来天真地做到这一点 并通过循环分配变量我得到错误:

const w : Array<Array<Array<number>>> = [];

    for(let i = 0; i < N; i++){
        for(let j = 0; j < N; j++){
        w[i][j] = [1,2,3];
        }
    }


TypeError: Cannot set property '0' of undefined.

相反,我不得不使用以下代码将数组的每个元素初始化为空。只有在这样做之后,我才能毫无问题地制作阵列。这不可能是最佳做法。我有什么误解,我应该写什么?

const w : Array<Array<Array<number>>> = [];

    for(let i = 0; i < N; i++){
        w[i] = [];
        for(let j = 0; j < N; j++){
        w[i][j] = [];
        }
    }

【问题讨论】:

  • 是的,您必须创建数组才能向其中添加内容。不知道为什么你认为这是一个误解。如果您将w 指定为null,您是否希望能够向其中添加任何项目?
  • 这是因为JS没有实现多维数组,只能模拟嵌套数组,需要在引用之前定义每个数组。

标签: javascript arrays typescript types undefined


【解决方案1】:

您收到错误是因为在您尝试设置 w[i][j] 时未设置 w[i]

修复

在循环中执行初始化或加载,例如

const N = 5;
const w: Array<Array<Array<number>>> = [];
for (let i = 0; i < N; i++) {
  w[i] = w[i] || [];
  for (let j = 0; j < N; j++) {
    w[i][j] = [1, 2, 3];
  }
}

console.log(w); // All good ?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 2015-10-03
    • 1970-01-01
    相关资源
    最近更新 更多