ActionScript 3.0 では、2 つの方法で結合配列を作成します。最初の方法は、Object インスタンスを使用する方法です。Object インスタンスを使用することにより、オブジェクトリテラルで配列を初期化できます。Object クラスのインスタンスは
汎用オブジェクト
とも呼ばれますが、機能的には結合配列と同じです。汎用オブジェクトの個々のプロパティ名が、格納した個々の値にアクセスするためのキーとして機能します。
次の例では、
monitorInfo
という名前の結合配列を作成します。オブジェクトリテラルを使用して、2 つのキーと値のペアが指定された配列を初期化します。
var monitorInfo:Object = {type:"Flat Panel", resolution:"1600 x 1200"};
trace(monitorInfo["type"], monitorInfo["resolution"]);
// output: Flat Panel 1600 x 1200
宣言時に配列を初期化する必要がある場合は、次のように、Object コンストラクターを使って配列を作成できます。
var monitorInfo:Object = new Object();
オブジェクトリテラルまたは Object クラスのコンストラクターで配列を作成した後は、配列アクセス(
[]
)演算子またはドット演算子()を使用して新しい値を追加できます。次の例では、
monitorArray
に新しい値を 2 つ追加します。
monitorInfo["aspect ratio"] = "16:10"; // bad form, do not use spaces
monitorInfo.colors = "16.7 million";
trace(monitorInfo["aspect ratio"], monitorInfo.colors);
// output: 16:10 16.7 million
この例で、
aspect ratio
というキーの名前には空白文字が含まれています。配列アクセス(
[]
)演算子ではこのような名前も使用できますが、ドット演算子で使用するとエラーになります。空白文字を含んだキー名を使用することはお勧めしません。
結合配列を作成する 2 つ目の方法は、Array コンストラクター(またはダイナミッククラスのコンストラクター)を使用し、配列アクセス(
[]
)演算子またはドット演算子(
.
)を使用して、キーと値のペアを配列に追加します。結合配列を Array 型として宣言した場合、オブジェクトリテラルで配列を初期化することはできません。 次の例では、
monitorInfo
という名前の結合配列を Array コンストラクターで作成し、
type
および
resolution
という 2 つのキーとそれぞれに対応する値を追加します。
var monitorInfo:Array = new Array();
monitorInfo["type"] = "Flat Panel";
monitorInfo["resolution"] = "1600 x 1200";
trace(monitorInfo["type"], monitorInfo["resolution"]);
// output: Flat Panel 1600 x 1200
結合配列の作成に Array コンストラクターを使用するメリットはありません。 たとえ Array コンストラクターや Array データ型を使用して宣言した結合配列であっても、
Array.length
プロパティや Array クラスのメソッドはまったく使用できないからです。Array コンストラクターはインデックス配列を作成する場合に限って使用するようお勧めします。