Javascript에서의 배열은 하나의 타입이 아니어도 되며, 연속적으로 이어져 있지 않은 sparse array입니다. 엄밀히 말하면 객체라고 볼 수 있습니다.

Javascript에서의 배열
다음과 같이 index를 key로 가지며 length 를 갖는 특수한 객체입니다.
그렇기 때문에 다양한 형태의 타입들이 하나의 배열에 들어 가 있을 수 있죠.
이러한 JS의 배열은 어떠한 장단점을 갖을까요?
●장점
-요소의 삽입 삭제가 효율적이다.
-다양한 자료구조를 담을 수 있다.
- ...
◆단점
-요소의 접근이 해시테이블의 형태이기에 직접접근 보다 느리다. -> 모던 자바스크립트 엔진은 이를 어느정도
해결했다고 합니다.
-배열 요소를 사용할 때 타입을 잘못인지하여 오류를 발생시킬 수 있다.
- ...
그렇다면 이제 몇 가지의 간단한 배열 관련 함수들의 시간복잡도를 알아보겠습니다.
① push && pop
단순히 배열의 맨 끝에 요소를 추가, 삭제 하는 함수입니다.
순회할 필요도 없으며 시간복잡도는 O(1)입니다.
② unshift && splice
unshift와 splice는 배열의 맨 앞과 중간에 요소를 추가하는 함수입니다.
따라서 기존의 index들이 바뀌어야 하므로 1회 순회를 하며 작업하게 됩니다. O(n)
③ sort
이는 구현 방식에 따라 속도와 복잡도가 달라질 수 있습니다.
(arr.sort()는 ASCII 를 기준으로 정렬하기에 생각과 다른 결과가 나올 수 있습니다. )
④ filter && map && forEach
O(n)의 시간복잡도를 갖습니다. 하지만 안에서 2중으로 사용하게 되면 O(n^2)이 되고 ... 그 후는...
(forEach vs for 문 단순 시간차이는 일반적으로 for문이 약 1.4배 빠르다고 합니다. 성능을 위해선 for문을 이용하는 방법이 있겠네요)
'Javascript > 문법 정리' 카테고리의 다른 글
[JavsScript] substring VS substr(deprecated) (0) | 2023.11.19 |
---|---|
[JavaScript] 문자 <-> 아스키 코드 값 변환 (0) | 2023.11.19 |