結合配列

 インデックス配列ではインデックス(0から始まる番号)を使用して配列の値の格納場所を指定する事ができました。ここで学ぶ*結合配列はインデックスではなく任意で決めた**ストリングを使用します。このストリングをキーと呼び、これ使用して配列の要素にアクセスする事ができます。

* 結合配列はハッシュ、マップとも呼ばれます。
** ストリングの他にオブジェクトのキーでアクセスする方法があります。

結合配列作成方法
 結合配列を作成するにはObejct リテラル、コンストラクタを使用します。Array コンストラクタを使用する方法もありますが、結合配列は Arrayメソッド、プロパティを使用する事ができません。これはArrayメソッド、プロパティはインデックス配列専用として用意されているからです。ここではObejct リテラル、コンストラクタを使用しての作成方法を説明します。

結合配列はキー(プロパティ)と値がワンセットになっていてこれをキー値ペアと呼びます。

Object コンストラクタ
Object コンストラクタ宣言時に配列の初期化を行う場合に使用します。

書式:
var 結合配列名:Object = new Object();

例:
var myHash:Object = new Object();
Object リテラル
Obeject リテラルを使用しての結合配列の作成方法を説明します。書式は以下の通りです。

書式:

最初に結合配列名を決めて、new Object の後の括弧()にキー、コロン「:」、値を入れます。値を複数入れる場合はカンマ「,」で区切ります。
var 結合配列名:Object = {キー1:"値1" , キー2:"値2" , キー3:"値3"};

例:
下のコードではmyHashという結合配列を作成しています。キーには国の名前、値にはその国の首都名を入れています。今回はtrace()でキーJapanに入っている値を出力し結果はTokyoになります。
var myHash:Object = {Japan:"Tokyo" , Spain:"Madrid" , America:"Washington"};
trace(myHash.Japan);
//出力:Tokyo
値の追加方法
結合配列に値を追加する方法はドット演算子を使用して追加する方法、角括弧演算子([ ])を使用する方法の2種類があります。書式は以下の通りです。

書式:(ドット演算子を使用)
結合配列名、ドット「.」、追加するキー、=、追加する値とアイテムが続きます。
結合配列名.追加するキー = "追加する値";

例:
下のコードではmyHashにドット演算子新しいキーペア値を追加しています。キーはKorea(韓国)、値はSeoul(ソウル)です。
var myHash:Object = {Japan:"Tokyo" , Spain:"Madrid" , America:"Washington"};
myHash.Korea = "Seoul";
trace(myHash.Korea);
//出力:Seoul

書式:(ドット演算子を使用)
結合配列名、ドット「.」、追加するキー、=、追加する値とアイテムが続きます。
結合配列名.追加するキー = "追加する値";

例:
下のコードではmyHashに角括弧演算子を使用して新しいキーペア値を追加しています。キーはFrance(フランス)、値はParis(パリ)です。
var myHash:Object = {Japan:"Tokyo" , Spain:"Madrid" , America:"Washington"};
myHash["France"] = "Paris";
trace(myHash.France);
//出力:Paris
キーを使用して指定

 結合配列内の値にアクセスする為にはキーを使用してアクセスします。アクセスする方法はドット演算子と角括弧演算子を使う2種類の方法があります。どちらを使用しても結果は同じです。

例:(ドット演算子使用)
myHash、ドット演算子、Japanと記述しています。
var myHash:Object = {Japan:"Tokyo" , Spain:"Madrid" , America:"Washington"};
trace(myHash.Japan);
//出力:Tokyo

例:(角括弧演算子使用)
myHash、ドット演算子、Japanと記述しています。
var myHash:Object = {Japan:"Tokyo" , Spain:"Madrid" , America:"Washington"};
trace(myHash["Japan"]);
//出力:Tokyo
for..in を使用してキーの取得
 for..inステートメントを使用して結合配列のキーを全て出力する事ができます。[for..inステートメントの詳細はこちら]
下の例のコードでは配列内のキーをfor..inで出力していますが、キーの出力される順番は異なります。この理由は結合配列の場合、キーと値のペアが配列内ではランダムで格納されるからです。

例:
下のコードはmyHashの中のキーをfor..inを使用して取り出してtrace()で出力しています。
var myHash:Object = {Japan:"Tokyo" , Spain:"Madrid" , America:"Washington"};
for (var i:String in myHash)
{
 trace(i);
}
//出力:3つのキーが順番ランダムに出力されます。(必ずしも下記の順番にはなりません。)
//America
//Spain
//Japan

トップへ