본문 바로가기
[ Design ]/Flash

배열(array) 객체의 메소드들

by 관이119 2012. 9. 13.
Urban Stereo | fitsys
http://blog.naver.com/fitsys/80008187309
배열 객체는 각자 고유의 기능을 가진 메소드들이 내장되어 있습니다. 일반적으로 ‘배열이 할 수 있는 것이 무엇인가?‘에 대한 고찰을 한다면 다음 메소드들의 이름만 보고도 그 기능을 짐작 할 수 있습니다. 이는 비단 배열뿐만 아니라 액션 스크립트에 내장된 모든 객체들이 가진 공통적 사항입니다.

1) length.배열 명
- length는 주로 for 반복문 인자의 한계를 설정할 때 사용됩니다. 이것은 배열 요소의 총 개수를 나타냅니다. 다른 메소드와 달리 대상이 없기 때문에 괄호()를 사용하지 않습니다.
- 다음 구문은 배열 요소의 개수가 총 3개이므로 ‘myTable.length’의 값은 ‘3’입니다. 그리고 trace 결과는 feeding은 ‘나물 먹었니? 국 먹었니? 쌀밥 먹었니? ’입니다.

myTable = ["나물 “,"국 “,"쌀밥 “];
for(i=0;i<myTable.length;i++){
feeding += myTable[i] + “먹었니? “;
}
trace(feeding);

<주> “나물 “ 문자열의 공백 삽입을 확인하시기 바랍니다. 만약 배열 요소가 숫자라면 공백은 무효가 됩니다. 그리고 ‘+=’ 연산자는 추가로 더한다는 뜻입니다. 이를 다르게 표시하면 ‘feeding = feeding + myTable[i]+“먹었니? “‘와 같습니다.

2) push(배열 명)
- 배열 요소를 새로운 인덱스와 함께 추가합니다. 이것은 게시판의 ‘쓰기’ 기능과 비슷합니다. 데이터를 보내기 전 단계에 마지막 사용자가 입력한 정보를 최종적으로 저장할 때 사용합니다. 뒤에 나올 concat()과 달리 ’myTable‘도 변경시킵니다.

- 다음 구문의 trace 결과는 '나물 ,국 ,쌀밥 ,먹고 배가 부릅니다'입니다. 이처럼 ‘push‘는 숫자, 문자열, 변수 등을 추가로 넣을 수 있고 또 그 수만큼 인덱스 번호를 늘여 배열에 저장시킵니다.

myInput = "먹고 배가 부릅니다";
myTable = ["나물 ","국 ","쌀밥 "];
myTable.push(myInput );
trace(myTable);

3) pop()
- ‘push‘는 게시판의 지우기 기능과 비슷합니다. 배열의 마지막 요소를 지웁니다.
- 다음 구문의 trace 결과는 '나물 ,국 '입니다.

myTable = ["나물 “,"국 “,"쌀밥 “];
myTable.pop();
trace(myTable);


4) concat(배열 명)
- push와 비슷한 것처럼 보이지만 이것은 다른 배열을 추가해서 새로운 이름의 배열에 담습니다.

- 다음 구문의 trace 결과 ’allTable‘의 값은 ‘나물 ,국 ,쌀밥 ,라면 ,2 ,그릇 ‘입니다.

myTable = ["나물 ", "국 ", "쌀밥 "];
yourTable = ["라면 ", 2 , "그릇 "];
allTable = myTable.concat(yourTable);
trace(allTable);

- 다음과 같이 실제로는 중첩된 배열 형태를 취합니다. 단 ’myTable‘는 변화지 않습니다.
["나물 ", "국 ", "쌀밥 ",["라면 ", 2 , "그릇 "]];

5) shift()
- 맨 앞의 원소를 뺍니다.

- 다음 구문의 trace 결과는 '국 ,쌀밥 '을 보여줍니다.

myTable = ["나물 “,"국 “,"쌀밥 “];
myTable.shift();
trace(myTable);

6) unshift(배열 요소)
- 맨 앞에서부터 원소를 추가합니다.

- 다음 구문의 trace 결과는 '2,젓가락 ,나물 ,국 ,쌀밥 '입니다.

myTable = ["나물 “,"국 “,"쌀밥 “];
myTable.unshift(2,“젓가락 ”);
trace(myTable);

7) sort()
- 순서가 뒤섞인 배열 요소들을 정렬합니다. 주로 카드 배열이나 자료 목록의 정렬에 사용합니다.
- 괄호() 안에 아무런 규칙을 정하지 않으면 정렬의 우선 순위는 약속된 규칙에 따라 ‘숫자 > 대문자 알파벳 > 소문자 알파벳 > 한글’에 오름차순으로 정렬합니다.
- 다음 구문의 trace 결과는 ‘1,100,Fruit ,apple rice ,국 ,나물 ,쌀밥 ‘입니다.

myTable = ["나물 “,100,"국 “,"쌀밥 “,"rice ",1,"apple ",”Fruit "];
myTable.sort();
trace(myTable);

<점프> sort()와 함수를 이용한 내림차순 정렬 법
구문 형식
배열명.sort(함수명);
- sort()의 괄호()안에 일정 규칙은 함수로 정할 수 있습니다. 이때 함수의 매개 변수는 배열 요소의 비교 대상을 정하는데 사용합니다. 괄호()안에 함수명만 기입하기 때문에 일반적인 함수의 실행과는 차이가 있습니다.
- 만약 첫 번째 요소가 두 번째 요소보다 작으면 그 앞으로 가도록 하기 위해 양수인 1을 되돌립니다.
- 만약 첫 번째 요소가 두 번째 요소보다 크다면 그 뒤로 가도록 하기 위해 음수인 -1을 되돌립니다.
- 만약 크기가 같다면 원래 위치대로 하기 위해 0을 되돌립니다.
- 이 같은 사항은 sort() 메소드에 이미 내정되어 있는 규칙입니다. 그래서 다음 구문의 trace 결과는 ‘쌀밥 ,나물 ,국 ,rice ,apple ,Fruit ,100,1’입니다. 정렬의 우선 순위도 ‘한글 > 소문자 알파벳 > 대문자 알파벳 > 숫자’로 바뀝니다.

myTable = ["나물 ", 100, "국 ", "쌀밥 ", "rice ", 1, "apple ", "Fruit "];
function compare(x, y) {
if (x<y) {
return 1;
} else if (x>y) {
return -1;
} else {
return 0;
}
}
myTable.sort(compare);
trace(myTable);

<주> 위의 구문처럼 문자와 혼용된 배열의 경우 정렬이 정확하지 않을 수 있습니다. 그러므로 가급적이면 숫자의 정렬에 사용하는 것이 좋습니다.

8) reverse()
- 배열 요소의 순서를 뒤집습니다.

- 다음 구문의 trace 결과는 ‘쌀밥 ,국 ,나물 ‘입니다.

myTable = ["나물 “,"국 “,"쌀밥 “];
myTable.reverse();
trace(myTable);

9) splice(시작 인덱스 , 마지막 인덱스)
- 배열의 원하는 부분을 잘라 새로운 변수에 담습니다. 괄호() 안의 첫 번째 인자는 자르기를 시작하는 인덱스 번호이고 두 번째 인자는 자르기를 끝내는 인덱스 번호입니다.

- 다음 구문의 trace 결과는 ‘myTable’의 값은 ‘나물’이고 'myStomach'의 값은 ‘국 ,쌀밥 ‘입니다.

myTable = ["나물 “,"국 “,"쌀밥 “];
myStomach = myTable.splice(1,2);
trace(myTable);
trace(myStomach);

10) slice(시작 인덱스 , 마지막 인덱스)

- 배열을 변화시키지 않고 원하는 배열 원소만 추출합니다. 괄호() 안의 첫 번째 인자는 추출을 시작하는 인덱스 번호이고 두 번째 인자는 추출을 할 수 없는 인덱스 번호입니다. 그래서 두 번째 인자의 번호에 해당되는 배열 요소는 추출할 수 없습니다.

- 다음 구문의 trace 결과는 ‘myTable’의 값은 ‘나물 ,국 ,쌀밥 ,어묵 ‘이고 'myStomach'의 값은 ‘국 ,쌀밥 ’입니다.

myTable = ["나물 ", "국 ", "쌀밥 ","어묵 "];
myStomach = myTable.slice(1, 3);
trace(myTable);
trace(myStomach);

- 만약 하나의 인자만 기입하면 인터프리터는 그 번호를 추출의 시작 인덱스로 받아들입니다. 다음 구문의 trace 결과는 ‘myTable’의 값은 ‘나물 ,국 ,쌀밥 ,어묵 ‘이고 'myStomach'의 값은 ‘쌀밥 ,어묵 ’입니다.

myTable = ["나물 ", "국 ", "쌀밥 ","어묵 "];
myStomach = myTable.slice(2);
trace(myTable);
trace(myStomach);

11) delete
- 오른쪽에 있는 배열을 지우거나 배열 요소를 지워 버립니다.

- 다음 구문의 trace 결과는 ‘myTable’의 값은 ‘나물 ,,쌀밥 ‘으로 두 번째 요소는 비어 있는 공간으로 바뀝니다. 만약 ’myTable[1]‘를 ’myTable‘로 바꾼다면 값을 얻을 수 없습니다.

myTable = ["나물 “,"국 “,"쌀밥 “];
myStomach = myTable.push();
delete myTable[1];
trace(myTable);

12) join(구분 자)
- 임의의 구분 자를 이용해 배열의 모든 내용을 문자열로 변환시킵니다. 반드시 리턴되는 값을 변수에 담아야 합니다. 괄호()안에 아무 설정을 하지 않으면 기본 값은 쉼표입니다(,)

- 다음 구문의 trace 결과는 ‘myTable’의 값은 ‘나물 ,국 ,쌀밥 ‘이고 'myStomach'의 값은 ‘나물 |국 |쌀밥 ’입니다.

myTable = ["나물 ", "국 ", "쌀밥 "];
myStomach = myTable.join("|");
trace(myTable);
trace(myStomach);

<주> ‘|’ 는 <Shift+\> 키를 누르면 됩니다.

댓글