« {}を使った配列オブジェクト | メイン | 条件分岐 »

配列を走査する(for~in)

配列や配列オブジェクトのプロパティ名や値を順に調べたい(走査したい)ときにはfor~inが利用できます。変数には、配列の場合には位置が取り出され、オブジェクトの場合にはプロパティ名が取り出されます。


「配列から位置を順に取り出す」
for ( 変数 in 配列){
// 繰り返すスクリプト
}

「配列オブジェクトからプロパティ名を順に取り出す」
for ( 変数 in 配列オブジェクト){
// 繰り返すスクリプト
}


例:配列の値を調べる
var colors:Array = ["red", "blue", "green", "yellow", "pink"];
for (var pn in colors) {
trace(pn + "=" + colors[pn]);
}

出力結果:
4=pink
3=yellow
2=green
1=blue
0=red


例:配列オブジェクトのプロパティ名と値を調べる
var goods:Object = {id:"sd91", name:"fix7", price:2500, volume:1};
for (var pn in goods) {
trace(pn + "=" + goods[pn]);
}

出力結果:
id=sd91
name=fix7
price=2500
volume=1

for~inは{}演算子の配列オブジェクトだけでなく、Objectクラスのインスタンスをはじめ、コアオブジェクト、ユーザー定義のクラスのインスタンスを走査することもできます。ただし、MovieClipオブジェクトなどのコアオブジェクトでは、_x、_yといった既存のプロパティ名は列挙されません。
なお、配列の値の個数はlengthで調べることができます。配列演算子([])を使って順に取り出すスクリプトは次のようになります。このスクリプトで繰り返しのために使用しているfor文はfor~inとは違います。詳しくは次の節で説明します。

例:配列の値を順に取り出す
var colors:Array = ["red", "blue", "green", "yellow", "pink"];
for (i=0; i<colors.length; i++) {
trace(i + "=" + colors[i]);
}

出力結果:
0=red
1=blue
2=green
3=yellow
4=pink

投稿者 oshige : 2005年2月16日 22:50