簡體   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