인덱스와 값<index, value>의 쌍으로 구성된 집합
시간복잡도
- 접근: O(1)
- 탐색: O(n)
- 삽입/삭제: O(n)
C, Java 등 일반적 경우
- 같은 타입의 데이터 나열
- 선언 시 연속적인 고정 크기 메모리 할당
- 미리 할당된 메모리 크기를 초과하면 새로운 메모리 공간을 할당하고 데이터를 복사 해야 함
- 데이터 크기, index, 배열 주소를 사용해 value에 즉시 접근 가능
Javascript
- 데이터 타입 혼합 가능
var arr = [1, "일", true, {"요소"}, [1, 2, "삼"]]
- 요소 추가 시 메모리 할당, 배열 크기 조절 가능
var arr = new Array(10);
//메모리가 할당되지 않으며, length 속성 값을 정함
console.log(arr.length) // 10 출력
arr[12] = 1
//arr[12] 메모리 할당, length 3 늘어남
console.log(arr.length) // 13 출력
- 해시 테이블로 구현된 객체
- index를 key로 하여 해시 테이블의 value에 접근
- 데이터 추가, 삭제 등에 더 효율적
- JavaScript 엔진이 배열 객체를 일반 배열처럼 동작하도록 최적화하여 구현
console.log(Object.getOwnPropertyDescriptors([1, 2, "삼"]));
{
"0": {
"value": 1,
"writable": true,
"enumerable": true,
"configurable": true
},
"1": {
"value": 2,
"writable": true,
"enumerable": true,
"configurable": true
},
"2": {
"value": "삼",
"writable": true,
"enumerable": true,
"configurable": true
},
"length": {
"value": 3,
"writable": true,
"enumerable": false,
"configurable": false
}
}