Javascript/문법 정리

javascript array

딸기케잌🍓 2023. 5. 17. 13:04

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문을 이용하는 방법이 있겠네요)