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);
以上のコードは、概ね期待した結果が得られました。