彩音 - Adobe AIR - 研究室:XION -Adobe AIR-laboratory
配列を検索する indexOf() lastIndexOf()

配列の値を検索したい場合には、全ての値を総当たりでチェックしなければならない場合もあるが、単純に値が含まれているかどうかわかればいいばあい、indexOf()、lastIndexOf() の関数が利用出来る。
indexOf() は指定した検索開始位置から後ろを検索し、最初にみつかった位置を返す。lastIndexOf() は指定した検索位置から手前に検索して最後に見つかった位置を返す。検索位置を省略すると indexOf() は最初から探し、lastIndexOf() は最後から探す。どちらも見つからなかった場合の戻り値は -1 である。
開始位置をマイナスで指定すると後ろから位置を数える。-1 が最後の位置になる。


var vlist:Array = new Array("a", "x", "b", "a", "x", "b", "x");
trace (vlist.indexOf("x", 0)); // 出力: 1
trace (vlist.indexOf("z", 0)); // 出力: -1
trace (vlist.lastIndexOf("x", -1)); // 出力: 6
trace (vlist.indexOf("b")); // 出力: 2
trace (vlist.lastIndexOf("b")); // 出力: 5
trace (vlist.indexOf("x", 2)); // 出力: 4
trace (vlist.lastIndexOf("b", -3)); // 出力: 2

ユニークな値だけ追加する


function addNo(tmplist:Array, no:int) {
var newlist:Array = tmplist.slice();
var index:int = newlist.indexOf(no);
if (index < 0) {
newlist.push(no);
}
return newlist;
}

var noList:Array = new Array(1, 2, 3);
noList = addNo(noList, 50);
noList = addNo(noList, 60);
noList = addNo(noList, 50);
noList = addNo(noList, 2);
trace (noList);
// 出力: 1, 2, 3, 50, 60

索引