자바스크립트 배열

kiki97 ㅣ 2022. 9. 16. 17:11

반응형

배열

특수한 형태의 객체로, 순서가 있는 자료를 저장하고 관리하는 용도에 최적화된 자료구조이다.

// 대괄호 (가장 많이 쓰이는 방법임)
let arr = [item1, item2...];

// new Array (잘 쓰이지 않음)
let arr = new Array(item1, item2...);

 

let fruits = ["사과", "오렌지", "자두"];

alert( fruits[0] ); // 사과, 특정 요소 접근

fruits[2] = '배'; // 요소 수정 ["사과", "오렌지", "배"]로 바뀜

fruits[3] = '레몬'; // 배열에 요소 추가 ["사과", "오렌지", "배", "레몬"]으로 바뀜

alert( fruits.length ); // 4
  • length 프로퍼티는 배열의 길이를 나타내고, 값을 수동으로 줄이면 배열 끝이 잘린다.

 

// 요소에 여러 가지 자료형이 섞여 있습니다.
let arr = [ '사과', { name: '이보라' }, true, function() { alert('안녕하세요.'); } ];

// 인덱스가 1인 요소(객체)의 name 프로퍼티를 출력합니다.
alert( arr[1].name ); // 이보라

// 인덱스가 3인 요소(함수)를 실행합니다.
arr[3](); // 안녕하세요.
  • 배열 요소의 자료형엔 제약이 없다.

 

pop()

배열 끝 요소를 제거하고, 제거한 요소를 반환

let fruits = ["사과", "오렌지", "배"];

alert( fruits.pop() ); // 배열에서 "배"를 제거하고 제거된 요소를 얼럿창에 띄웁니다.

alert( fruits ); // 사과,오렌지

 

push()

배열 끝에 요소를 추가

let fruits = ["사과", "오렌지"];

fruits.push("배");

alert( fruits ); // 사과,오렌지,배
  • fruits.push(...)를 호출하는 것은 fruits[fruits.length] = ...하는 것과 같은 효과

 

shift()

배열 앞 요소를 제거하고, 제거한 요소를 반환

let fruits = ["사과", "오렌지", "배"];

alert( fruits.shift() ); // 배열에서 "사과"를 제거하고 제거된 요소를 얼럿창에 띄웁니다.

alert( fruits ); // 오렌지,배

 

unshift()

배열 앞에 요소를 추가

let fruits = ["오렌지", "배"];

fruits.unshift('사과');

alert( fruits ); // 사과,오렌지,배

 

여러 개의 요소를 한번에 추가하기

let fruits = ["사과"];

fruits.push("오렌지", "배");
fruits.unshift("파인애플", "레몬");

// ["파인애플", "레몬", "사과", "오렌지", "배"]
alert( fruits );

 

반복문

let arr = ["사과", "오렌지", "배"];

for (let i = 0; i < arr.length; i++) {
  alert( arr[i] );
}
  • 가장 빠른 방법이고 오래된 브라우저와도 호환된다.

 

let fruits = ["사과", "오렌지", "자두"];

// 배열 요소를 대상으로 반복 작업을 수행합니다.
for (let fruit of fruits) {
  alert( fruit );
}
  • 배열 요소에만 사용되는 모던한 문법
  • 배열에서 for( let i in arr) 는 되도록 사용 금지
    • 객체와 함께 사용할 때 최적화되어 있어 배열에 사용하면 객체에 사용하는 것 대비 10~100배정도 느림
    • 모든 프로퍼티를 대상으로 순회, 유사 배열일시 숫자형이 아닌 프로퍼티와 메서드들이 문제를 일으킬 수 있음

 

length 프로퍼티

length 프로퍼티는 배열 내 요소의 개수가 아니라 가장 큰 인덱스에 1을 더한 값이다.

let fruits = [];
fruits[123] = "사과";

alert( fruits.length ); // 124

 

let arr = [1, 2, 3, 4, 5];

arr.length = 2; // 요소 2개만 남기고 잘라봅시다.
alert( arr ); // [1, 2]

arr.length = 5; // 본래 길이로 되돌려 봅시다.
alert( arr[3] ); // undefined: 삭제된 기존 요소들이 복구되지 않습니다.
  • length값을 수동으로 감소시키면 배열이 짤린다. 짧아진 배열은 다시 되돌릴 수 없다.
  • 이런 특징을 이용하면 arr.length = 0;을 사용해 아주 간단하게 배열을 비울 수 있다.

 

다차원 배열

다차원 배열은 행렬을 저장하는 용도로 사용된다.

let matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];

alert( matrix[1][1] ); // 5, 중심에 있는 요소

 

toString

배열에는 toString 메서드가 구현되어 있어 이를 호출하면 요소를 쉼표로 구분한 문자열이 반환된다.

[객체를 원시형으로 변환하기] 참고

let arr = [1, 2, 3];

alert( arr ); // 1,2,3
alert( String(arr) === '1,2,3' ); // true
  • 배열엔 Symbol.toPrimitive나 valueOf 메서드가 없다.
반응형