【发布时间】: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