我有一个一维数组,我想转换为二维数组。所以,我使用循环。为了证明每个索引数组都已正确输入,我将其打印到屏幕上。但它只打印第一行,然后抛出错误
未捕获的TypeError:无法设置未定义的属性“0”
我听说在JS中,与其他语言相比,数组有些不同(我最熟悉Java)。所以,也许我有点困惑,但我不知道。
这是我的代码。
var k = 0;
//move tha matrix from one dimensional matrix to two dimensional
var cubes = new Array([]);
for(var i = 0; i < n; i++){
for(var j = 0; j <= n; j++){
cubes[i][j]=matriks[k];
document.write("["+ i +"]["+ j +"] = "+cubes[i][j].value + " ");
k++;
}
}
矩阵是一维数组。立方体是我想要将矩阵放入的二维数组。
答案 0 :(得分:0)
问题是你没有告诉JavaScript存储在最外层数组中的对象应该是一个数组。当您尝试使用内部数组时,尚未初始化它们,因此您未定义。要解决此问题,您只需将代码更改为:
即可var k=0;
var cubes = [];
var i, j;
for(i=0; i<n; i++){
cubes[i] = [];
for(j=0; j<=n; j++){
cubes[i][j]=matriks[k];
document.write("["+i+"]["+j+"] = "+cubes[i][j].value+" ");
k++;
}
j=0;
}
答案 1 :(得分:0)
二维数组&#34;立方体&#34;的声明如果你不正确,你必须初始化矩阵的每一行,这会产生错误
var k=0;
//move tha matrix from one dimensional matrix to two dimensional
var cubes = [];
for(var i=0; i<n; i++){
cubes[i] = [];
for(var j =0; j<=n; j++){
cubes[i][j]=matriks[k];
console.log("value at ", i, j, " = ", cubes[i][j]);
k++;
}
}
答案 2 :(得分:0)
这一行:
var cubes = new Array([]);
创建一个数组,其中包含一个条目,这是另一个数组。它不会创建一个多维数组(JavaScript没有它们,它有数组数组)。这意味着cubes
除了条目[0]
外没有任何数组。
要解决此问题,请将其更改为
var cubes = [];
并添加
cubes[i] = [];
之后
for(var i=0; i<n; i++){
创建每个子阵列。
E.g:
var k=0;
//move tha matrix from one dimensional matrix to two dimensional
var cubes = [];
for(var i=0; i<n; i++){
cubes[i] = [];
for(var j =0; j<=n; j++){
cubes[i][j]=matriks[k];
document.write("["+i+"]["+j+"] = "+cubes[i][j].value+" ");
k++;
}
}