-
[JS 알고리즘&자료구조] 객체의 Big OJavaScript/Basic 2023. 10. 30. 00:54
우선 객체의 특성을 알아보는 것으로 시작하자.
- 정렬되어 있을 필요가 없을 때 잘 작동한다.
- 빠른 접근과 입력, 제거를 원할 때 사용한다.
앞에서 배웠던 것을 토대로 하면 빠르다는 것은 입력, 제거, 접근하는 시간이 상수 O(1) 이라는 것이다. 객체의 데이터에 접근하고, 객체의 데이터를 삭제하고, 객체에 무언가를 입력하는 것은 모두 상수 시간 O(1)으로 작동한다. 아래와 같다고 보면 되겠다.
위의 탐색은 접근과는 다른 개념이다. 접근은 객체의 Key로 데이터에 접근하는 것을 의미하는 것이며 탐색은 어떤 특정한 정보가 어떤 값에 있는지 확인하는 것을 뜻한다. 탐색을 위해서는 모든 Key의 데이터에 접근해서 내가 원하는 데이터가 존재하는 지 확인한다. 그 말은 객체 내에 데이터가 많을수록 시간이 더 많이 소요된다는 것이다. O(n) 이다. 이런 개념으로 객체에 딸린 js 메소드를 살펴보면 아래와 같다.
Object.keys // O(n), 크기가 커질수록 배열에 추가해야 하는 key들이 늘어남 Obejct.values // O(n), 크기가 커질수록 배열에 추가해야 하는 value들이 늘어남 Object.entries // O(n), 위와 동일 hasOwnProperty // O(1), 어떤 속성(key)를 전달하면 그 속성이 존재하는지만 확인
'JavaScript > Basic' 카테고리의 다른 글
[JS 알고리즘&자료구조] Big O 배열 메소드 (0) 2023.10.30 [JS 알고리즘&자료구조] 배열 안의 데이터에 접근이 느린 이유 (0) 2023.10.30 [JS 알고리즘&자료구조] 로그와 이제까지의 요약 (0) 2023.10.26 [JS 알고리즘&자료구조] 공간 복잡도 (0) 2023.10.26 [JS 알고리즘&자료구조] Big O 표현식의 단순화 (2) 2023.10.26