0

A私は JavaScript で小さな関数を持っていて、配列を 2 次元配列に分割したいと考えています。正方行列に使用します。明らかに、2x2の正方行列が入力にある場合は2x2になり、3x3の場合も同様です。しかし、最初の行を読んだ後に立ち往生しています。したがって、arr行が繰り返されます。次の行を適切に読み取る方法について何か考えがある人はいますか?たとえば、配列があるとしましょう

A = [2,1,4,5,1,2,3,1,9]

次に、配列 arr を次のようにします。

arr = [[2,1,4],[5,1,2],[3,1,9]]

これは後で行列式の計算に使用されます。

function create2Darray(clname) {
  var A = document.getElementsByClassName(clname);
  var arr = new Array();
  var rows = Math.sqrt(A.length);
  for (var i = 0; i < rows; i++) {
    arr[i] = new Array();
    for (var j = 0; j < rows; j++) {
      arr[i][j] = A[j].value;
    }
  }
}
4

1 に答える 1

4

常に同じ値を割り当てています。次のようになります。

arr[i][j] = A[i*rows+j].value;

編集: DOM 操作のない完全な関数を次に示します (つまり、A は単純な整数の配列です)。

function create2Darray(A) {
  var arr = [];
  var rows = Math.sqrt(A.length);
  for (var i = 0; i < rows; i++) {
    arr[i] = [];
    for (var j = 0; j < rows; j++) {
      arr[i][j] = A[i * rows + j];
    }
  }
  return arr;
}

console.log(create2Darray([1, 2, 3, 4, 5, 6, 7, 8, 9]))

于 2013-05-11T21:05:37.200 に答える