관리 메뉴

nkdk의 세상

Ac3.0 array관련 핸드링 본문

My Programing/Flex&AIR

Ac3.0 array관련 핸드링

nkdk 2008. 5. 26. 15:03
Array에 관련된 핸들링 함수를 나열한다.

var arr:Array = new Arrays(); = 생성
arr.push("a", "b", "c", "d");   = 초기에 값을 넣는다.

arr.unshift("z"); 배열 처음에 z 요소 추가

요소 확인 하는 방법
for (var i:int = 0; i< arr.length; i++) { trace(arr[i]); }

일치하는 요소 찾기
if(arr[i] == match) {}  // match는 object형식이다.

요소 삭제하기
arr.splice(start, deletecount);

요소 중간에 변경하기
arr.splice(1,0,"11", "22", 33"); // 이렇게 하면 요소는 하나도 삭제 안되고 2번째 열부터 11, 22, 33이 추가된다.

문자열을 배열로 변환하기
var str:String = "Hello world! flex 3.0";
var arr:Array = str.split(" "); // 스페이스를 이용하여 문자열을 분리한다.

배열을 문자열로 바꾸기
arr.join() 혹은 그냥 arr 이라고 하면 콤마를 매개변수로 넘긴 것과 같이 자동으로 string이 출력된다.

배열의 복사본 생성하기
일반 변수는 그냥 복사해도 되지만 배열은 메모리를 참조하기 때문에 일정의 규칙으로 복사해야 한다.
var Aray2:Array = array.concat(); 혹은 array.slice();

복잡한 다차원 데이터 저장하기
var cars:Array = new Array();
cars.push(["taxi", 123, "honda"]);
cars.push(["sports", 123, "toyota"]);
cars.push(["sedan", 123, "mitsubishi"]);
// 배열 반복시
for(var i:int = 0; i< cars.length;i++) { trace(cars[i][0] ..... ); }

이 방법은 숫자로 구분하면 알아보기도 힘들고 요소 순서가 바뀌면 코드도 바꿔야 하기 때문에 연관배열 방법이있음.넣는 방법은 다음과 같다.

cars.push({make:"honda",  year:1997, color:"yellow"); ...
// 배열 반복시
for(var i:int = 0; i< cars.length;i++) { trace(cars[i].make ..... ); }

배열의 정렬 및 역정렬
arr.sort(); 정렬
arr.sort(Array.DESCENDING); 역정렬
arr.sort(Array.CASEINSENSITIVE); 대소문자 구분하지 않음.
arr.sort(Array.NUMERIC); 숫자 정렬
arr.sort(Array.UNIQUESORT); 전체 자료가 유일한 자료일 경우에만 정렬을 실시한다. 그렇지 않으면 0을 반환한다.
arr.sort(Array.RETURNINDEXEDARRAY); 원래의 값은 변경하지 않고 정렬된 인덱스만 반환할 경우 사용한다.
Array.CASEINSENSITIVE | Array.DESCENDING); 여러가지 옵션을 합치는 방법이 있다.
arr.reverse(); 역순으로 정렬한다.
arr.sortOn(["year", "make"]);  여러가지의 속성으로 정렬을 할 때 사용한다.

사용자정의 정렬 구현 방법(앞에 the가 붙은 밴드이름들에서 the를 뺄 시에..)
arr.sort(bandNames);

function bandNameSort(band1:String, band2:String):int {
band1 = band1.toLowerCase();
if(band1.substr(0, 4) == "the " { band1 = band1.substr(4); }
if(band1 < band2) { return -1; }
if(band1 < band2) { return 1; }

배열의 요소를 무작위로 섞기
function randomSort(elementA:Object, elementB:Object):Number {
return Math.random() - .5;
}

서로 같은 주소를 참조 하고 있는지 비교 할 경우에는
arra1 == arra2 이런식으로 하면 된다. 서로 같은 주소가 아니고 자료가 같으면 같지 않다.
요소의 값 들을 비교 하기 위해서는 각 값들의 값을 돌아 가면서 만약 다를 경우에 false 시키는 방식을 사용해야 한다.

이 정도까지가 일단은 배열에 관련된 사용방법이다. 응용 방법은 참으로 다양한 것 같다.