index of는 항목을 검색합니다 ... MovieClip에는 "name"속성이 없으므로 MovieClip.name == "foo"는 컴파일러 오류를 발생시켜야합니다 ... myMovieClip.name == "foo" 사실을 입력하고 배열에있는 경우 true를 반환합니다.
인덱스가 실제로 필요한 경우 배열을 반복 할 필요가 있습니다 ... 키를 사용하거나 배열이 숫자이고 밀도가 높으면 증분 루프 ... 배열이 연관성이있는 경우 (문자열 키
//this will return an array of all indices
myArray.map(function (val:*,index:int,...rest):int { return (val.name == "foo") ? index : -1 }).filter(function (val:int,...rest):Boolean { return val != -1 });
//here a more reusable utility function ... you may want to put it to some better place ... just as an example ...
package {
public class ArrayUtils {
public static function indexOf(source:Array, filter:Function, startPos:int = 0):int {
var len:int = source.length;
for (var i:int = startPos; i < len; i++)
if (filter(source[i],i,source)) return i;
return -1;
}
}
}
//and now in your code:
var i:int = ArrayUtils.indexOf(myArray, function (val:*,...rest):Boolean { return val.name == "foo" });
: 숫자 배열의
, 나는 다음과 같은 두 가지 방법 중 하나를 건의 할 것입니다 ... 당신은 명령 적 필터 및 관련 함수는 숫자 인덱스를 포함하기 때문에, 대한-에서 루프를 사용할 필요가) 사용
도움이 된 희망 ...;)
greetz
(210)
back2dos
정말 답이 아닙니다. –
원래 질문 "두 indexOf() 위의 작동하지 않는다",하지만 난 indexOf 실패한 버그를 진술하고 있어요 – Unreality