将一维数组转换为二维数组

时间:2015-05-22 06:28:50

标签: javascript arrays matrix multidimensional-array

我有一个一维数组,我想转换为二维数组。所以,我使用循环。为了证明每个索引数组都已正确输入,我将其打印到屏幕上。但它只打印第一行,然后抛出错误

  

未捕获的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++;
	}
}

矩阵是一维数组。立方体是我想要将矩阵放入的二维数组。

3 个答案:

答案 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++;
    }
}