javascriptの2次元配列の生成

JavaScriptではネイティブオブジェクトに対してメソッドを追加して、2次元配列を定義することができます。(ここではArrayオブジェクトのプロトタイプに対して。)

『JavaScript では2次元以上の配列は用意されていない。しかし、C言語とほぼ同じ方法で、配列の配列を作ることができる。』(JavaScript: The Good Parts 良いパーツによるベストプラクティス p.73)

Array.matrix = function (m, n, initial) {
    var a, i, j, mat = [];
      for (i=0; i < m; i += 1) {
        a = [];
        for (j = 0; j < n; j += 1) {
          a[j] = initial;
        }
        mat[i] = a;
      }
      return mat;
}
// ゼロで埋められた 4 X 4 の行列を生成する

var myMatrix = Array.matrix(4, 4, 0);

// 単位行列を生成するメソッド

Array.identity = function (n) {
    var i, mat = Array.matrix(n, n, 0);
    for (i=0; i < n; i += 1) {
      mat[i][i] = 1;
    }
    return mat;
};
myMatrix = Array.identity(4);

配列の出力メソッドがありませんでしたがせっかくなので、自作してみました。

// 生成された行列を書き出すメソッド
Array.output = function (n) {
  var i,j, mat = Array.identity(n);
    for (i=0; i < n; i += 1) {
      for (j=0; j < n; j += 1) {
        document.writeln(myMatrix[i][j]);
      }
      document.writeln("<br>");
    }
    return mat;
};
printMatrix = Array.output(4);

以上のコードは、概ね期待した結果が得られました。