Object & Array
반응형
1. Object
자바 스크립트에서 오브젝트는 일반적으로 다음과 같은 상황에서 사용됩니다.
- 정렬이 필요없을때
- 빠른 접근, 삽입, 삭제를 할 때
Object의 빅오를 살펴보면 아래와 같습니다.
접근 : O(1)
삽입 : O(1)
삭제 : O(1)
검색 : O(n)
정렬은 되어 있지 않지만 다른 모든 것들이 빠르다는것을 빅오 표기법으로 알수 있습니다.
즉 오브젝트는 index가 아니라 key값으로 작업을 처리합니다.
2. Arrary
자바스크립트에서 배열의 가장 중요한 점은 정렬이 가능하다는 것입니다.
정렬이 필요한 데이터를 다룰때 사용하게 됩니다.
Array의 빅오를 살펴보면 아래와 같습니다.
삽입, 제거 : 배열의 구성에 또는 삽입,제거 할 위치에 영향을 받습니다.
접근 : O(1)
검색 : O(n)
배열의 삽입과 제거는 어느 위치에서 작업을 수행하는지에 영향을 받습니다.
마지막에 삽입과 제거 작업은 O(1)입니다. 배열의 끝 인덱스를 알기때문에 추가하거나 제거만 하면 되기 때문입니다.
반대로 맨처음 즉 인덱스0번째에 삽입과 제거를 하는 작업은 무조건 마지막보다 느립니다. 그 이유는 맨처음의 인덱스가 바뀜으로 그뒤의 요소들까지 배열의 길이만큼 모두 바뀌게 되기 때문입니다.
이처럼 배열의 성능은 push(), pop(), sort()를 제외하고는 대부분 O(n)의 성능을 갖게 됩니다.
push() O(1)
pop() O(1)
sort() O(n * logn)
shift() O(n)
unshift() O(n)
concat() O(n)
slice() O(n)
splice() O(n)
map/filter/reduce O(n)
반응형
'Programming' 카테고리의 다른 글
중복된 숫자 개수 (0) | 2023.03.12 |
---|---|
빈도수 패턴(Frequency pattern) (0) | 2023.03.12 |
일급 객체(first-class object) - 자바스크립트 (0) | 2023.03.10 |
함수(Function) - 자바스크립트 (0) | 2023.03.10 |
템플릿 리터럴(Template literal) - 자바스크립트 (0) | 2023.03.09 |
댓글