Object와 Map에 대하여

Jocy·2022년 8월 25일
0
post-thumbnail

정글이 끝나고 여러 회사들의 코딩 테스트를 준비하고 있다.
자주 사용되는 데이터구조이지만 개인적으로 제대로 정리가 안되어있는 것 같다.
그래서 이번에는 데이터구조 중에 객체(Object), 맵(Map) 대해서 정리를 해보려고 한다.
(추가적으로 정보가 추가될 수 있다)

Map에 관하여

  • 간단한 키와 값을 서로 연결시켜 저장하며 저장된 순서대로 각 요소들을 반복적으로 접근
  • JS에서는 Map객체에 저장되어 있는 각 요소들을 [키,값] 형태의 배열로 변환해주는 for … of 를 사용할 수 있다.
  • ECMAScript 2015(ES6), V8엔진에서 Map은 삽입된 순서를 가지고 있는 해시테이블로 구현되어있다. 일반적인 해시 테이블은 순서체(iterable)를 위한 그 어떤 순서 정보도 갖고 있지 않다.
  • V8은 Tyler Cloase가 제안한 결정론적 해시 테이블 알고리즘을 사용
    var sayings = new Map();
    sayings.set("cat", "meow");
    sayings.set("elephant", "toot");
    
    for (var [key, value] of sayings) {
      console.log(key + " goes " + value);
    }
    // "cat goes meow"
    // "elephant goes toot"

Object와 Map의 차이점

  • Object의 Key는 String이며 Map의 Key는 모든 값을 가질 수 있다.
  • Object는 크기는 수동으로 추적해야하지만, Map크기를 쉽게 얻을 수 있다
  • Map은 삽입된 순서대로 반복된다.
  • Object에는 prototype이 있어 Map에 기본 키들이 있다
    (map = Object.create(null)를 사용하여 우회할 수 있다.)

Object와 Map을 사용해야될 때의 기준

  • 각 개별 요소에 대해 적용해야 하는 로직이 있을 경우 Object를 사용
  • 실행 시까지 키를 알 수 없고, 모든 key동일한 type이고, 모든 value동일한 type일 경우
    Map을 사용
profile
Software Engineer

0개의 댓글