상세 컨텐츠

본문 제목

플래시 AS3.0 array sort 정렬 관련

ADOBE/ ActionScript

by AlrepondTech 2012. 2. 7. 10:39

본문

반응형

 

 

 

 

=================================

=================================

=================================

 

 

 

 

 

 

 

1. 배열요소 추가 및 제거

 

length는 조회및 수정 기능이 있습니다. 현재 배열의 길이를 조회할 수 있고,

그 길이에 값을 줘서 변경하여 수정할 수 있습니다. 배열의 길이를 조회하는 것과

배열의 길이를 늘리거나 줄일 수 있습니다.

 

concat은 배열을 합칩니다. 예를 들어서 설명하는 것이 이해가 빠를 듯 합니다.

var array1:Array = [1, 2, 3];

var array2:Array = [4, 5, 6];

var array:Array = new Array();

trace(array.concat(array1, array2)); // 1,2,3,4,5,6출력

 

push() - 추가된 배열 요소는 마지막 인덱스에 위치합니다.

array1.push(4); // array 1 = [1,2,3,4]가 됨

 

unshift() - push와는 반대입니다. 맨 앞 인덱스에 위치합니다.

array1.unshift(4); // array1 = [4,1,2,3]

 

pop() - 배열의 맨 마지막부터 하나씩 제거합니다. 매개변수가 없습니다.

제거하면서 제거한 값을 반환합니다.

trace(array1.pop()); // 3을 출력

 

shift() - 배열의 맨 앞부터 하나씩 제거 합니다. 매개변수가 없습니다.

제거하면서 제거한 값을 반환합니다.

trace(array1.shift()); //1을 출력

 

splice() 인덱스 위치를 지정해서 추가하거나 삭제하는 메서드입니다.

매개변수는 두 개에서 세 개이상이 있을 수 있는데

첫번째, 삭제를 시작할 인덱스 값

두번째, 지정한 인덱스 부터 삭제할 배열 갯수 값

세번째부터, 추가 시킬 배열 요소 값입니다. 

추가 배열요소 값을 넣지 않으면, 삭제만을 하는 것이고,

삭제할 갯수 값을 0으로 해놓고, 추가 배열 요소 값을 넣으면 추가만 됩니다. 

이 메서드도 제거하면서 제거한 값을 반환합니다.

 

array1.splice(0,2,7,8,9); 
trace(array1);//array1 = [7,8,9,3];(1,2가 삭제되고 7,8,9가 대신 들어옴)

trace(array1.splice(0,2,7,8,9)); // 1,2 출력

 

추가한 배열 요소는 배열의 삭제된 위치에 순서대로 자리잡습니다.

array1.splice(1,1,7,8,9); 
trace(array1);//array1 = [1,7,8,9,3];(2가 사라진 자리에 7,8,9가 들어옴)

 

 delete는 내용을 삭제하지만, 인덱스 자체를 삭제하진 못합니다.

delete array1[1];

trace(array1.length); // 길이 값 3출력

trace(array1); // 배열 요소 1, 3출력

trace(array1[1]); //undefined 출력

 

2. 그 외의 메서드들

 

1) every(Function, Object=null):Boolean  
  이 메서드는 배열 요소, 인덱스, 배열 객체를 매개변수로 삼는 메서드를 

  인수로 삼아야합니다.

  false에 해당하는 값이 나올 때 까지 인수가 된 메서드를 실행합니다. 

  every()메서드는 매개 변수를 두가지 가지고 있지만, 둘다 인수로 채울

  필요는 없습니다.

  array.every(functionName); //Object = null일 경우(모든 배열요소 실행)
  array.every(functionName, Object); // 아닐 경우(특정 배열요소 실행)

 

 var array:Array = [1,2,3];

 var arrays:Array = [4, 5, "hi"];

 var isTrue:Boolean = array.every(Every);//true

 var isFalse:Boolean = arrays.every(Every);//false

 function Every(e:*, i:int, o:Array):Boolean

 // e=배열 구성요소, i = 인덱스, o= 배열

{

   return (e is Number);

}

 

2) filter(Function, Object:*=null):Array

지정된 함수를 실행하고,  true값을 반환하는 항목만을 새 배열로 구성합니다.

 

var array:Array =[{name:"철이", like: false}, {name:"순이",

like:true}, {name:"미희", like:true}];  

var NEWarray:Array = array.filter(isLike);

array.forEach(Trace);

NEWarray.forEach(Trace);

trace(NEWarray[0].name, NEWarray[1].name);

function isLike(e, i, o)

{

  return (e.like == true);

}

function Trace(e, i, o)

{

 trace(e.name, e.like ? "좋다": "싫다");

}

실행하면 다음과 같이 출력됩니다.

 

 

 

 

반응형

 

 

728x90

 

철이 싫다

순이 좋다

미희 좋다

순이 좋다

미희 좋다

순이 미희

 

3) forEach(Function, Object:* =null):void

배열의 각 항목이 함수를 실행 하도록 합니다. 위의 예제를 참고하세요. 

 

4) indexOf(search element:*, from index:uint) 검색하는 요소의 인덱스
   값을 반환합니다. 검색요소가 배열 내용에 해당되지 않을 경우 -1을 반환.
   검색을 시작할 인덱스 위치를 지정할 수도 있습니다.

 

var array:Array = ["a", "b", "o", "k", "o", "k", "o"];
array.indexOf("k"); // 3을 반환
array.indexOf("k",4);// 5를 반환

  

5) join(요소간 분리 표시:String)

인수를 넣지 않은 경우 기본 "," 표시가 배열요소 간에 분리표시로 쓰입니다.

해당 배열을 합쳐서 String으로 반환합니다.

 

var array:Array = ["a","b","c"];
trace(array.join("and")); // a and b and c 출력
trace(array.join(""); // abc 출력

 

6) lastIndexOf(search element:*, from index:uint) 
indexOf와 같이 인덱스 값을 반환합니다. 실행하는 순서는 역순입니다.

 

var array:Array = ["a", "b", "o", "k", "o", "k", "o"];  

array.lastindexOf(k, 4); // 3을 반환
array.lastIndexOf(k); // 5를 반환

 

7) map(Function, Object:* =null)

실행할 함수결과에 해당하는 값으로 새 배열을 만듭니다.  

 

var array:Array =[2, 4, 6];

var arrays:Array = array.map(addnum);

function addnum(e, i, o)

{

 return e+5;

}

trace(arrays);//7, 9, 11 출력

 

8) reverse() 배열의 순서를 뒤집습니다

 12345 --> 54321

 

9) some(Function, Object:* =null)

 every()의 반대라고 할 수 있습니다. true를 반환하는 항목에 도달할 때 까지 실행합니다.


10)sort(...args(비교함수, 옵션))

 

인수를 넣지 않을 경우, 대문자우선, 알파벳 순서를 우선해서 배열을 새로

고칩니다. 배열을 새로 고친다는 것은 배열의 인덱스 순서가 우선순위가 높은

순서로 바뀌는 것을 말합니다. 숫자는 숫자로 인식하지 않고 문자열 값으로

인식한다고 합니다. 유니코드 값이라나 뭐라나 하는 것으로 말입니다. 

 

쉽게 말하면, 비교함수나 옵션을 넣지 않고 이 메서드를 그냥 사용할 경우, 

숫자 값은 1,2,3,4,5,7,8,9,10 같은 식으로 정렬 시키지 못한다는 것.

  

인수는 비교함수나 옵션을 선택할 수 있습니다.

비교함수는 사용자 정의 메서드로 작성합니다.

 

sort옵션:

1 또는 Array.CASEINSENSITIVE: 대문자 무시, 알파벳 순서 정렬
2 또는 Array.DESCENDING: 내림차순 정렬, 원래 sort옵션을 거꾸로 합니다.
4 또는 Array.UNIQUESORT

8 또는 Array.RETURNINDEXEDARRAY
16 또는 Array.NUMERIC: (숫자)정수 값 낮은 순서부터 정렬(숫자로 바꿀 
수 있는 타입만 배열에 있어야 합니다. "1"은 숫자로 가능, "one" 불가능 )

 

11) sortOn(fieldName:object, sort옵션)

 

다음은 여러가지 실행방법입니다.

sortOn(fieldName1, fieldName2)
sortOn(fieldName1, sortOption | sortOption)
sortOn([fName1, fName2, fName3], [sOption1, sOption2, sOption3])

필드가 여러가지일 경우 앞의 필드를 sort하고 뒤의 필드를 sort합니다.
옵션이 없는 경우 첫번,두번째 필드 모두 문자열 값이 가장 높은 요소를
최우선 합니다. 

 

12) toLocaleString()  toString메서드와 같습니다.

13) toString() 해당 배열의 배열요소를 문자로 반환합니다.
    문자나 숫자 타입은 그대로 문자를 반환하지만, 
    아닌 것은 "Object" + "클래스이름"을 반환합니다.

 

sort메서드와 관련된 부분은 양도 많고, 간단히 설명하기 어렵습니다. 자세한 내용은 

'액션스크립트  개발자 가이드'와 '액션스크립트3.0 참조 설명서'에서 참고하시기 바랍니다.

 

 

=================================

=================================

=================================

 

 

반응형


관련글 더보기

댓글 영역