AS3.0 Cookbook/배열2008. 7. 5. 20:06

배열의 원소 값을 순서대로 활용하고 싶을때는 for() 순환문을 사용한다.
for문의 검사식에서 해당 배열의 길이 값을 활용하여 배열의 길이만큼 실행하면서 배열의 값을 추출한다.
var ary:Array = [ "a" , "b" , "c" , "d" ]
for(var i:int=0 ; i<ary.length ; i++){
trace( ary[i] )
}
출력 : a  b  c  d


이처럼 0번 원소부터 마지막 4번째 원소인 3번 원소까지 for문은 반복실행하면서 i값을 증가하고, 증가한 i값을 통해 배열의 원소로 접근하도록 한다.

또는 뒤에서부터 값을 추출 하고 싶을 때는 다음과 같이한다.
var ary:Array = [ "a" , "b" , "c" , "d" ]
for(var i:int=ary.length - 1 ; i >= 0 ; i--){
trace( ary[i] )
}

출력 : d  c  b  a
배열의 길이에 1을 감소하는 것은 길이의 크기와 실제 배열의 원소 번호와의 값이 일치하지 않기 때문에 원소로 접근하기 0부터 세어진 원소의 counter를 염두하여 길이의 -1을 한다.

* 위처럼 for문의 검사식이 실행할 때마다 배열.length를 사용한다면 반복문이 실행할때마다 배열의 길이를 계산하여 읽어오게 된다. 따라서 for문이 실행중에 배열의 길이에 변화가 없다면 미리 변수에 길이를 저장하는것이 바람직하다.
var ary:Array = [ "a" , "b" , "c" , "d" ]
var aryNum:int = ary.length
for(var i:int=0 ; i< aryNum; i++){
trace( ary[i] )
}
출력 : a  b  c  d
위의 코드처럼 aryNum라는 변수에 계산한 배열의 길이를 담아두었다가 for문에서 활용한다.

배열의 특정 값을 추출하고 싶을 때는 조건문을 하나 추가하면 된다.
var ary:Array = [ "a" , "b" , "c" , "d" ];
var aryNum:int = ary.length;
var match:String = "c";
for (var i:int=0; i< aryNum; i++) {
 if ( ary[i] == match) {
  trace( "찾는 값은 : " , i , "번 원소" );
  break;
 }
}

// 출력 : 찾는 값은 :  2 번 원소
찾는 문자열을 변수에 담아 for문이 실행시에 매번 해당 원소와 값을 비교한다. 찾는 것이 있으며 break하여 순환문에서 빠져나온다.

Posted by 버터백통