Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

Array Object

Array 개체

JavaScript에는 명시적인 배열 자료형이 없습니다. 하지만 배열을 다루기 위해서 Array 개체와 그 개체의 메소드를 이용할 수 있습니다. Array 개체에는 다양한 방법으로 배열을 다루기 위한 메소드들이 있는데, 배열을 합치거나, 순서를 뒤집거나, 정렬하는 등의 작업을 할 수 있습니다. 배열 길이를 알 수 있는 속성과 정규 표현식에 사용할 수 있는 속성들이 있습니다. 배열 은 이름이나 색인으로 참조할 수 있는 값들을 모아놓은, 값의 순서가 유지되는 집합입니다. 예를 들어, 우리는 고용 번호로 색인된 고용인의 이름을 담고 있는 emp라는 배열을 만들 수 있습니다. 이 때 emp[1]는 1번 고용인, emp[2] 2번 고용인이 되는 것입니다.

 

배열 만들기

Array 개체는 이렇게 만들 수 있습니다.

1. arrayObjectName = new Array(element0, element1, ..., elementN)
2. arrayObjectName = new Array(arrayLength)

arrayObjectName은 새 개체의 이름이거나 존재하는 다른 개체의 속성 이름입니다. Array 개체의 속성이나 메소드를 이용할 때는 arrayObjectName은 존재하는 Array 개체 이름이거나 존재하는 다른 개체의 속성입니다.

element0, element1, ..., elementN는 배열의 원소(element)가 될 값들입니다. 이런 식으로 지정하면, 나열한 값들을 원소로 가지고, 길이는 값의 개수인 배열이 만들어집니다.

arrayLength는 배열의 초기 길이입니다. 다음 코드는 원소 다섯 개를 가지는 배열을 만듭니다.

billingMethod = new Array(5)

배열 상수값 또한 Array 개체입니다. 예를 들어, 다음과 같은 상수값은 Array 개체입니다. 배열 상수값에 대한 자세한 내용은 배열 상수값을 보시기 바랍니다.

coffees = ["French Roast", "Columbian", "Kona"]

배열에 원소 넣기

원소에 값을 할당함으로써 배열에 값을 넣을 수 있습니다.

emp[1] = "Casey Jones"
emp[2] = "Phil Lesh"
emp[3] = "August West"

배열을 만들 때 값을 넣을 수도 있습니다.

myArray = new Array("Hello", myVar, 3.14159)

배열 원소 참조하기

배열 원소의 순서를 나타내는 숫자로 원소를 참조할 수 있습니다. 예를 들어 다음과 같은 배열을 만들었다고 해봅시다.

myArray = new Array("Wind","Rain","Fire")

그러면 첫 번째 원소는 myArray[0]으로 참조할 수 있고, 두 번째 원소는 myArray[1]로 참조할 수 있습니다.

원소의 색인은 영(0)부터 시작하지만 배열 길이(예를 들면 myArray.length)는 배열의 원소 개수를 나타냅니다.

 

Array 개체의 메소드

Array 개체는 다음과 같은 메소드들을 가지고 있습니다.

  • concat 메소드는 두 배열을 합쳐서 새 배열 하나를 반환합니다.
myArray = new Array("1","2","3")
myArray = myArray.concat("a", "b", "c"); // myArray는 ["1", "2", "3", "a", "b", "c"]이 되었습니다.
  • join(deliminator = ",") 메소드는 배열의 모든 원소를 문자열로 바꿔서 하나의 문자열을 만들어줍니다.
myArray = new Array("Wind","Rain","Fire")
list = myArray.join(" - "); // list는 "Wind - Rain - Fire"입니다.
  • pop 메소드는 배열의 마지막 원소를 배열에서 제거하고 그 원소를 반환합니다.
myArray = new Array("1", "2", "3");
last=myArray.pop(); // MyArray는 ["1", "2"], last = "3"이 되었습니다.
  • push 메소드는 하나 또는 그 이상의 원소를 배열 끝에 추가하고, 추가된 마지막 원소를 반환합니다.
myArray = new Array("1", "2");
myArray.push("3"); // MyArray는 ["1", "2", "3"]이 되었습니다.
  • reverse 메소드는 원소의 순서를 뒤집어서 첫 번째 원소가 마지막 원소가 되고, 마지막 원소가 첫 번째 원소가 되도록 합니다.
myArray = new Array ("1", "2", "3");
myArray.reverse(); // myArray = [ "3", "2", "1" ]이 되었습니다.
  • shift 메소드는 첫 번째 요소를 배열에서 제거하고, 그 원소를 반환합니다.
myArray = new Array ("1", "2", "3");
first=myArray.shift(); // MyArray는 ["2", "3"], first는 "1"이 되었습니다.
  • slice (start_index, upto_index) 메소드는 배열의 일부분을 추출하여 새 배열을 반환합니다.
myArray = new Array ("a", "b", "c", "d", "e");
myArray = myArray.slice(1,4); //색인 1부터 색인 4 바로 앞까지의 원소를 추출해서 [ "b", "c", "d" ]를 반환합니다.
  • splice(index, count_to_remove, addelement1, addelement2, ...) 메소드는 배열에 원소를 추가하거나 배열에서 원소를 제거합니다.
myArray = new Array ("1", "2", "3", "4", "5");
myArray.splice(1,3,"a","b","c", "d"); // MyArray는 ["1", "a", "b", "c", "d", "5"]가 되었습니다.
// 이 코드는 색인 1(즉 "2")부터 원소 세 개를 제거하고, 그 자리에 원소를 추가합니다.
  • sort 메소드는 원소를 정렬합니다.
myArray = new Array("Wind","Rain","Fire")
myArray.sort(); // 배열을 정렬했으므로 myArrray = [ "Fire", "Rain", "Wind" ]가 되었습니다.

sort 메소드에 배열을 어떻게 정렬할지 결정하는 콜백 함수를 전해줄 수 있습니다. 그 함수는 두 값을 비교해서 다음 셋 중 하나를 반환해야 합니다.

  • 정렬할 때 a가 b보다 작다면 -1(또는 임의의 음수)를 반환
  • 정렬할 때 a가 b보다 크다면 1(또는 임의의 양수)를 반환
  • a와 b가 같으면 0을 반환

예를 들어 다음 코드는 원소의 마지막 글자를 기준으로 배열을 정렬합니다.

var sortFn = function(a,b){
    if (a[a.length - 1] < b[b.length - 1]) return -1;
    if (a[a.length - 1] > b[b.length - 1]) return 1;
    if (a[a.length - 1] == b[b.length - 1]) return 0;
    }
myArray.sort(sortFn); // 배열을 정렬했으므로 myArray = ["Wind","Fire","Rain"]가 되었습니다.
  • unshift 메소드는 하나 또는 그 이상의 원소를 배열 앞에 추가하고 배열의 새 길이를 반환합니다.

2차원 배열

다음 코드는 2차원 배열을 만듭니다.

a = new Array(4)
for (i=0; i < 4; i++) {
   a[i] = new Array(4)
   for (j=0; j < 4; j++) {
      a[i][j] = "["+i+","+j+"]"
   }
}

바로 위 코드는 이런 배열을 만들어냅니다.

Row 0:[0,0][0,1][0,2][0,3]
Row 1:[1,0][1,1][1,2][1,3]
Row 2:[2,0][2,1][2,2][2,3]
Row 3:[3,0][3,1][3,2][3,3]

배열과 정규 표현식

배열이 정규 표현식과 문자열을 매치한 결과로 생성되었을 때, 그 배열은 매치에 대한 정보를 제공하는 속성과 원소를 포함하고 있습니다. RegExp.exec, String.match, String.split의 반환 값은 배열입니다. 정규 표현식과 관련된 배열 사용에 대한 정보를 얻으려면 4장 정규 표현식을 보십시오.

문서 태그 및 공헌자

 이 페이지의 공헌자: teoli, Wafe
 최종 변경: teoli,