[ JavaScript ] Set & Map

DD·2021년 1월 2일
0

JavaScript

목록 보기
4/5

Map

키-값을 쌍으로 저장하고, 삽입 순서도 기억하는 콜레션이다. Object와 유사하지만 순서, key 타입의 자유도 등에서 차이점이 있다.

new Map()

주의

map[key] = 2 처럼 object와 동일한 방식으로 값을 설정하고, 해당 value 값을 가져올 수 있다.
하지만 이 방식은 map을 일반 객체로 취급하는 방법으로, 여러 제약이 생긴다.

map.get / map.set과 같은 메소드를 사용해야한다.

참고

Map vs Object

1. 의도치 않은 key

  • Map : 명시적으로 제공한 키 외에는 어떤 키도 가지지 않는다.

  • Object : 프로토타입을 가지므로 기본 키가 존재할 수 있다. 주의하지 않으면 직접 제공한 키와 충돌 가능성이 있음


2. key의 자료형

  • Map : 함수, 객체 등 '모든' 자료형이 가능하다.

  • Object : string, symbol만 가능하다.


3. key의 순서

  • Map : 키는 정렬 되므로 삽입순으로 순회가 이루어진다.

  • Object : 정렬되지 않는다. 순서가 없다.


4. 크기

  • Map : size 속성을 통해 쉽게 알 수 있다. (array의 length처럼)

  • Object : 직접 계산해 내야한다.
    ex) Object.keys(obj).length


5. 순회

  • Map : 바로 순회가 가능하다. (forEach, for of 등으로.. 다만 forEach는 배열과 조금 다르다. 참고)

  • Object : for in, keys 등으로 key값을 구한 후에 순회해야한다.


6. 성능

  • Map : 키-값 쌍의 추가 / 제거가 잦을 때 더 좋은 성능을 보인다.

  • Object : 키-값 쌍의 추가 / 제거를 위한 최적화가 없다.

Map - MDN

Set

자료형에 관계 없이 원시 값, 객체 참조 모두 '유일한 값'을 저장할 수 있다.

new Set([iterable])

주의

set또한 map에서 언급한 것과 마찬가지로 get, set, has, delete, clear, size와 같은 메소드를 통해 값을 접근, 변경, 삭제한다

Set - MDN

추가 참고 링크

맵과 셋

profile
기억보단 기록을 / TIL 전용 => https://velog.io/@jjuny546

0개의 댓글