0

いくつかのデータを取得していますが、データは次のようになります。

1,  2,  3,  4,  5
6,  7,  8,  9,  10
11, 12, 13, 14, 15

こんな感じにしたい

[
   [[1],[2],[3],[4],[5]],
   [[6],[7],[8],[9],[10]],
   [[11],[12],[13],[14],[15]]
]

行列のように配列をアドレス指定できるようにするにdata[0][1]は、「2」になります。

この答えを通して、それはほとんどそこにありますが、完全ではありません。なりたい自分に見えなくて困っています。

4

3 に答える 3

5

これはどうですか、これが入力データを正確に表していると仮定すると、次のようになります。

var data   = "1,2,3,4,5\n6,7,8,9,10\n11,12,13,14,15";
var matrix = data.split('\n').map(function(val) {
  return val.split(',');
});

指定した出力はおそらく意図したものではないことに注意してください。各数値は、おそらく独自の単一項目の配列であってはなりません。代わりに、上記のコードは以下を生成します。

[
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 1]
]

matrix[0][1]する必要があるのではなく、を返すことを意味2しますmatrix[0][1][0]

編集:コメントに記載されているように、これがブラウザサポートのニーズに確実に適合するように、私はあなたに任せました. これは、これまでに作成した JS の他のすべての行にも当てはまります...

于 2013-02-10T07:20:42.607 に答える
1

注-配列を反復処理する必要がある場合forは、for..in

  • for..in保証されていない順序でアイテムを返します。これは、配列を操作するときに必要なものではない可能性があります
  • for..in配列要素だけでなく、Array プロトタイプに追加されたものをすべて返します (つまり、従来の for ループを使用すると、ページに含まれる外部ライブラリに関係なく、コードが機能することを完全に確信できます。心配する必要はありません)。他のコーダーが Array.prototype にプロパティ/メソッドを追加しました)

\nが行区切りで、が行内の項目区切りである場合,、次のようなものを使用できます。

/* assuming data is already filled like:
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
*/
var arr = data.split("\n"), arr2 = [];
for(var i = 0; i < arr.length; i++) {
    if(arr[i] != '') arr2.push(arr[i].split(','));
}
console.log(arr2);
/* arr2 will be like:
[
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15]
]
*/
于 2013-02-10T07:19:43.433 に答える
-1
var data = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15'.split(',');
var matrixData = [];
while (data.length > 0) {
    matrixData.push(data.splice(0, 5));
}
document.write(matrixData[0][1]);

編集:データを単純な数値配列として取得する場合

于 2013-02-10T07:24:24.653 に答える