JavaScriptプログラム

【JavaScript】多次元配列を生成する関数

JavaScriptには、他の言語(Java, Python, C++, etc.)が標準で持っている「多次元配列」がありません。
多次元配列はとても汎用性の高いデータ構造なので、JavaScriptでも多次元配列を使いたいところです。

 

例えば、以下の2次元配列を宣言するプログラムは、エラーになります。

var a = [][];

 

(注)多次元配列の多次元とは、2次元以上のことです。
(注)JavaScript でも、1次元配列(多次元でない)は標準装備されています。

 


2次元配列の宣言・生成・使用

Java の場合

例えば、Java で配列名(book)の宣言と生成は以下となります。

int book[][];                    // 2次元配列の宣言
book = new int[3][5];            // 2次元配列の生成

配列の生成後、その配列を使用することが可能になります。

book[0][0] = 10;                 // 2次元配列の使用

 

JavaScript の場合

JavaScript で、配列名(book)の生成は以下となります。

var book = [];                   // 1次元配列の宣言
prep2D(book, 3, 5);              // 2次元配列の生成

ここで、今回作成する「多次元配列を生成する関数(prep2D)」を使用しています。

配列の生成後、その配列を使用することが可能になります。

book[0][0] = 10;                 // 2次元配列の使用

 


2次元配列を生成する関数(prep2D

 

プログラム1.
//
// preparation
//
var book = [];
prep2D(book, 3, 5);

//
// test
//
book[0][0] = 10;
document.write(book[0][0]);

//
// prep2D
//
function prep2D(a, x, y) {
    for (var i=0; i<x; i++) {
        a[i] = new  Array(y);
    }
}

 

プログラムの説明

プログラムの4-5 行目で、2次元配列(book)を使う準備をしています。

  • 4 行目、bookを配列として宣言

それにより、関数prep2D に配列book を「参照渡し」しています。

参照渡しすることで、1次元配列から2次元配列の加工が可能になります。

 

10-11 行目は、2次元配列(book)の使用テストです。

 

prep2D

仮引数(入力)

  • a: 1次元配列名 → 加工して2次元配列になる
  • x: 1次元目の要素数
  • y: 2次元目の要素数

 

2次元配列への加工(生成)

JavaScript では、配列の要素に配列を代入する(=)ことができます。

  • 1次元配列の要素に、1次元配列を入れると、2次元配列になる

 

この性質を利用して、以下の手順で、1次元配列を2次元配列に加工します【1】。

  1.  宣言済み1次元配列(仮引数: a)を、1次元目要素数(x)だけ生成する
  2.  生成した各配列 a[ i ] に、1次元配列(要素数y)を生成し、代入する

【参考1】MDNインデックス付きコレクション#多次元配列

 

 


3次元配列を生成する関数(prep3D

 

prep2D を3次元に拡張することで、prep3D が作れます。

 

プログラム2.

//
// preparation
//
var book = [];
prep3D(book, 3, 5, 2);

//
// test
//
book[0][0][0] = 10;
document.write(book[0][0][0]);

//
// prep3D
//
function prep3D(a, x, y, z) {
    for (var i=0; i<x; i++) {
        a[i] = new  Array(y);
        for (var j=0; j<y; j++) {
            a[i][j] = new Array(z);
        }
    }
}

 

 

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です