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

Converting One Dimensional Array to Two Dimensional

本文关键字:二维数组 转换 一维数组      更新时间:2023-09-26

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

Uncaught TypeError: Cannot set property '0' of undefined

我听说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++;
	}
}

矩阵是一个一维数组。立方体是一个二维数组我想把矩阵放入其中

问题是您没有告诉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;
}

二维数组"cubes"的声明不正确,您必须初始化矩阵的每一行,这会产生错误

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

这一行:

var cubes = new Array([]);

创建一个数组,其中只有一个条目,这是另一个数组。它不创建多维数组(JavaScript没有多维数组,它有数组的数组)。这意味着除了[0]入口,cubes中没有任何数组。

要修复它,将其更改为

var cubes = [];

并添加

cubes[i] = [];

for(var i=0; i<n; i++){

创建子数组

例如:

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