[英]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.