配列を生成する

 JavaScriptでは多くの言語同様に配列を利用することができます。C言語等では配列には個数を指定したり、代入できるデータ等に制限がありますが、JavaScriptの場合には何の制限もありません。個数も特に指定しなくても動的に割り当てられます。また、どんな型のデータでも代入することができます。実際にはデータだけでなくオブジェクトでも関数でも、ほぼ制限なく代入することができます。
 こんなに自由なのは単なる配列ではなく配列オブジェクトだからです。つまり単なる入れ物ではないということです。特にJavaScriptでは配列の機能を追加したり変更することができるため、かなり強力なものになります。もちろん連想配列も扱うことができます。連想配列はハッシュとも呼ばれます。今では連想配列よりもハッシュの方が一般的な名称でしょう。

ここでは配列の生成について説明していきます。JavaScriptで配列を生成するには、いくつかの書き方があります。もっとも古くからある書き方は以下のようにnew Array()として配列オブジェクトを生成するものです。配列もオブジェクトなので画面にはobjectと表示されます。(サンプル01を実行する)

a = new Array();
document.write(typeof(a));

最初にJavaScriptが登場したNetscape 2では、この書き方しかできなかったため古いJavaScriptでは、このようになっていることも多くあります。また、他の理由でこのように書く事があります。これに関しては、少し後で説明します。また、上記サンプルで()はなくても正しく動作します。(サンプル02を実行する)

a = new Array;
document.write(typeof(a));

同様に以下のように記述することもできます。(サンプル03を実行する)

a = [];
document.write(typeof(a));

さきほど別の理由でnew Array()と記述すると説明しましたが、指定した個数の配列を用意したい場合に利用します。以下のサンプルでは9つの配列要素が生成されます。(サンプル04を実行する)

a = new Array(9);
document.write(a.length);

JavaScriptでの配列要素は0番から始まるのでa[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]が生成されたことになります。もっとも、JavaScriptではC言語等と異なり自動的に要素数が調整されるので、このように個数を指定することは滅多にないでしょう。ちなみにInternet Explorer 4の頃は、大きい値を指定するとブラウザがハングアップしてしまうというバグもありました。
上記サンプルでは9つの配列要素が生成されましたが、new Array()のパラメータが2つ以上の場合は異なる動作をします。JavaScriptではパラメータが1つで数値の場合は指定された個数の要素を生成しますが、2つ以上の場合は、要素に代入するデータとみなされます。以下のサンプルを実行すると結果は3になります。これはa[0]に9、a[1]に8、a[2]に7が代入されたため、このような結果になります。(サンプル05を実行する)

a = new Array(9,8,7);
document.write(a.length);

new Array()のパラメータが1つでも数値でない場合は最初の要素として代入されます。以下のサンプルではa[0]にSampleの文字列が代入されます。(サンプル06を実行する)

a = new Array("Sample");
document.write(a.length);

さきほどnew Array()以外にa=[]と指定してもよい、と書きました。この場合はパラメータが1つで数値であっても要素として代入されます。以下のサンプルを実行すると長さは1、要素内容として9が表示されます。(サンプル07を実行する)

a = [9];
document.write(a.length+"<br>");
document.write(a[0]);

BASIC言語などでは簡単に多次元配列を扱うことができます。JavaScriptは標準では多次元配列に関する命令などが用意されていませんが、配列がオブジェクトであることを利用して、オブジェクト内にオブジェクトを生成することで多次元配列を扱う事ができます。new Array()で記述することもできますが、一般的には分かりやすさの面から[]を入れ子にして記述します。以下のサンプルでは配列aの要素数は3、a[2][1]として抽出したデータの値である8が表示されます。(サンプル08を実行する)

a = [[1,2,3],[4,5,6],[7,8,9]];
document.write(a.length+"<br>");
document.write(a[2][1]);

生成した配列を削除することもできます。削除せずに数値や文字列を代入するという方法もあります。配列を削除するにはdeleteを使います。以下のサンプルではtestオブジェクトに生成された配列aを削除しています。削除すると何もなくなるので結果はundefinedとして表示されます。(サンプル09を実行する)

test = {};
test.a = [[1,2,3],[4,5,6],[7,8,9]];
document.write(test.a.length+"<br>");
delete test.a;
document.write(test.a+"<br>");


最終更新日:2007年1月26日

>目次に戻る