Macromedia Flash非公式テクニカルノート

配列と配列要素

ID: FN0108017 Product: Flash

Platform: All
Version: 5.0

1. 配列の要素と長さ
ActionScriptの配列は、生成するときに要素の個数を決める必要がありません。配列のインデックス番号をブラケットアクセス[]で指定して値を代入すれば、そのサイズの配列が作成できます。インデックスは、連続した番号である必要はありません。メモリには、配列中で使用する要素のインデックス番号と値とが格納されます。つまり、配列で使っていない要素にはメモリを割り当ません。このために、メモリを効率的に使いながら、配列のサイズを自由に変えることができるのです。

配列の要素数は、'length'プロパティで調べることができます(詳しくは「ActionScript辞書」の'Array.length'の項をご参照ください)。途中に使っていないインデックス番号があっても、'length'プロパティはそれらを含めた数を返します。したがって、返される数値は、配列要素のインデックス番号の最大値に1を加えた数(インデックス番号は0から始まるので)ということになります。

lArray = new Array();
lArray[4] = 5;
trace ("配列要素 = "+lArray);
trace ("配列要素数 = "+lArray.length);
//出力ウィンドウの結果 配列要素 = ,,,,5 //未定義の要素も出力(定義された要素[4])
配列要素数 = 5 //未定義も含めた要素数

2. 配列要素とオブジェクトプロパティ
Arrayオブジェクトにも、オブジェクトプロパティを設定することができます。配列要素は、オブジェクトプロパティとは別個に扱われます。配列に新しい要素を追加すると、'length'プロパティが自動的に更新されます。これに対して、オブジェクトプロパティの追加は、'length'プロパティの値に影響を与えません。逆に、作成した配列のオブジェクトプロパティを調べると、その中には配列要素が含まれます。したがって、配列要素は、Arrayオブジェクトの特別なプロパティだといえます。そして、Arrayオブジェクトのメソッドは、インデックス番号のついた配列要素のみを対象として扱います。

lArray = new Array();
lArray[1] = 2;
lArray["Two"] = 3;
lArray[4] = 5;
trace ("配列要素 = "+lArray);
trace ("配列要素数 = "+lArray.length);
for (item in lArray) { //すべてのユーザー定義プロパティを出力
   trace ("オブジェクトプロパティ = "+item+": "+lArray[item]);
}
//出力ウィンドウの結果
配列要素 = ,2,,,5 //配列要素のみが(未定義も含めて)出力(定義された要素[1][4])
配列要素数 = 5 //配列要素のみの(未定義も含めた)個数
オブジェクトプロパティ = 4: 5 //配列要素[4]
オブジェクトプロパティ = Two: 3 //プロパティ
オブジェクトプロパティ = 1: 2 //配列要素[1]

参考文献
Collim MoockActionScript: The Definitive Guide』O'REILLY
David Flanagan『JavaScript第3版』オライリー・ジャパン

_____

作成者: 野中文雄
協力者: ginga baba
作成日: 2001年8月22日


© 2001 and beyond Fumio Nonaka All rights reserved.