2017-06-03 203 views
1

所以在我的JavaScript中,我有一個巨大的一維數組,並且我想將它轉換爲二維數組。這是我迄今爲止,但似乎沒有工作。一維數組轉換爲二維數組,使用Javascript

var arrLines = strRawContents.split(","); 
    var array2; 
    for (int i = 0; i < 98; i++) { 
     for (int j = 0; j < 5; j++) { 
      array2[i][j] = arrLines[(j * 98) + i]; 
     } 
    } 
    return arrLines 
    } 

這就是我現在有,我試圖使98行,在每一行,有5列。我的目標很複雜。如果我的一維數組是[1,2,3,4,5,6,7,8,9,10等],我的[0] [0]的二維數組應該是1,在[0] [1]應該是2等等,直到[0] [7]將是8,那麼[1] [0]將是9,[1] [1]將是10等等。

+0

哦,它的假設是返回數組2 OO所以,你不理睬這個/ – MaxxyPoo

+0

JavaScript中沒有* 2D *或*關聯數組*,因爲我們已經在PHP等等中使用了對象,只需更新第2行到'var array2 = {};' – Fahmi

回答

1

在每個外部循環中,創建一個數組。在內部循環中,將內容推入到外部循環的末尾,將新創建的數組推入最終的二維數組中。

var arrLines = strRawContents.split(","); 
var array2 = []; 
for (var i = 0; i < 98; i++) { 
    var arr = []; 
    for (var j = 0; j < 5; j++) { 
    arr.push(arrLines[(i * 5) + j]); 
    } 
    array2.push(arr); 
} 
return arr2; 

在你原來的代碼有些錯誤:

  1. 需要初始化你array2是一個空數組。
  2. JavaScript中沒有關鍵字int。使用varletlet是首選,但並不是所有的瀏覽器都支持它。
  3. 的公式應該是(i * 5) + j(j * 98) + i
  4. 的返回值應該是array2
+0

謝謝你,這很但對於2D變量,我想要第一個數組,例如(0)是行,然後是下一個6個項目將成爲專欄。然後它重複第7個數組作爲下一行,然後是其後的6個項目作爲它的列。有沒有辦法做到這一點,我非常感謝幫助! – MaxxyPoo

+0

我不理解你的評論。你能否更新你的問題來舉例說明預期的結果? –

+0

請註明'strRawContents'的起始值以及最終的二維數組應該是什麼樣子。對不起,你的意見不是很清楚。 –