배열
여러 개의 값을 순차적으로 나열한 자료구조
- 요소 : 배열이 가지고 있는 값
- 인덱스 : 배열의 요소의 위치를 나타내는 0 이상의 정수 (0부터 시작)
요소에 접근하기 위해서는 대괄호 표기법 사용
배열은 요소의 개수 (배열의 길이)를 나타내는 length 프로퍼티를 가짐
배열은 인덱스와 length 프로퍼티를 갖기 때문에 for문을 통해 순차적으로 요소에 접근할 수 있음
자바스크립트에서 배열은 객체 타입
const arr = ['apple', 'banana', 'orange']
typeof arr // object
구분 | 객체 | 배열 |
---|---|---|
구조 | 프로퍼티 키와 프로퍼티 값 | 인덱스와 요소 |
값의 참조 | 프로퍼티 키 | 인덱스 |
값의 순서 | X | O |
length 프로퍼티 | X | O |
자바스크립트의 배열은 일반적인 배열의 동작을 흉내 낸 특수한 객체
length 프로퍼티
요소의 개수 (배열의 길이)를 나타내는 0 이상의 정수
빈 배열의 경우 length 프로퍼티 : 0
빈 배열이 아닌 경우 가장 큰 인덱스 + 1
length 프로퍼티 값은 배열에 요소를 추가하거나 삭제하면 자동으로 갱신
length 프로퍼티 값을 임의의 숫자 값으로 명시적으로 할당할 수 있음
희소 배열
배열의 요소가 연속적으로 위치하지 않고 일부가 비어 있는 배열
const sparse = [, 2, , 4];
console.log(sparse.length); // 4
console.log(sparse); // [empty, 2, empty, 4]
console.log(Object.getOwnPropertyDescriptors(sparse));
/*
'1': { value: 2, writable: true, enumberable: true, configurable: true },
'3': { value: 4, writable: true, enumberable: true, configurable: true },
length: { value: 4, writable: true, enumberable: false, configurable: false }
*/
→ 배열에는 같은 타입의 요소를 연속적으로 위치시키는 것이 최선