반응형
배열
특수한 형태의 객체로, 순서가 있는 자료를 저장하고 관리하는 용도에 최적화된 자료구조이다.
// 대괄호 (가장 많이 쓰이는 방법임)
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 메서드가 없다.
반응형