繁体   English   中英

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

[英]Converting One Dimensional Array to Two Dimensional

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

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

矩阵是一维数组。 多维数据集是我要放置矩阵的二维数组。

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

二维数组“多维数据集”的声明不正确,因为您必须初始化矩阵的每一行,这会产生错误

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM