- 2009年5月13日 18:50
- ActionScript 2.0 | ActionScript 3.0
今日は非常に基本的なtipsを紹介します。Array.indexOf()メソッドは、配列エレメントを走査し、該当するエレメントがあるか検索し、該当した場合はエレメントのインデックスを返すインスタンスメソッドです。
ただし、このメソッドは配列内に複数ある該当エレメントには対応していません。例えば下記のような配列があり、3が格納されているエレメントのインデックスを抜き出したいとします。しかし、3は複数あるので単純にindexOfしても返値は2です。
var array:Array = [1,2,3,3,4,5,6,7,8,9,10,3,6]
結果を配列内の該当する全てのエレメントにするためには、Array.indexOf()メソッドの第二引数がポイントになります。第二引数には、検索の開始位置を指定することができます。これを利用し、下記のサンプルでは、do-whileステートメントを使用し、該当のエレメントを発見したらそのインデックスを足し込み繰返し処理します。
var array:Array = [1,2,3,3,4,5,6,7,8,9,10,3,6]
repeatIndexof(array, 6);
function repeatIndexof(targetArray:Array, searchElement:*):Array {
var result:int = -1;
var results:Array = [];
var reserve:Boolean;
do {
if (reserve) results.push(result);
result = targetArray.indexOf(searchElement, ++result);
}while (reserve = result >= 0)
return results
}



