2017-06-03 10 views
1

私のjavascriptでは巨大な1D配列があり、それを2次元配列に変換したいと考えています。これはこれまで私が持っていたものですが、うまくいかないようです。1D配列から2次元配列を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つの列があります。私の目標は複雑です。私の1D配列が[1,2,3,4,5,6,7,8,9,10など]である場合、[0] [0]のMy 2D配列は[0]で1でなければなりません。 [0] [7]が8になるまで[1] [2]、[1] [0]は9、[1] [1]は10になるはずです。

+0

ああそれは、配列2のOOを返すことを仮定していますそれでは、無視してください/ – MaxxyPoo

+0

javascriptには、2Dなどの配列はありません。代わりにobjectを使用してください。行2を 'var array2 = {}; 'に更新してください。 – Fahmi

答えて

1

すべての外側ループで、配列を作成します。内側のループで、内容を外側のループの最後にプッシュし、最後に作成した配列を最後の2-d配列にプッシュします。

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はありません。 varまたはletletは、すべてのブラウザにはまだそれをサポートして好ましいがされていません。
  3. 式が(i * 5) + jない(j * 98) + iでなければなりません。
  4. 戻り値はarray2する必要があります使用してください。
+0

ありがとう、これは非常に便利です。しかし、私が持っている2D変数では、最初の配列、たとえば(0)を行に、次に6項目が列になります。そしてそれは次の行である7番目の配列とそれから6番目の列で繰り返されます。これを行う方法はありますか、私は非常に助けを感謝します! – MaxxyPoo

+0

ここにあなたのコメントがありません。例を使って目的の結果を説明するために質問を更新できますか? –

+0

'strRawContents'の開始値と最後の2-d配列の様子を記述してください。ご迷惑をおかけして申し訳ございません。 –