본문 바로가기
개발/TTL

[JS][자바스크립트]맵과 셋

by ISA(류) 2021. 7. 1.

1. 맵과 셋 (javascript.info)

 

맵과 셋

 

ko.javascript.info

Map은 객체와 유사한 성격을 가진다. 객체와 다른점은 여러가지 전용 메소드들과 객체키와 NaN키를 허용한다는 점과 따로 설정없이 이터러블 속성을 가진다는 점과 keys, value, entries, forEach 내장 메서드를 기본 지원 하고 있다.

그리고 삽입 순서를 기억한다. 등가비교에는  SameValueZero(수정불가) 알고리즘을 사용한다.

Set은 중복을 허용하지 않는 이터러블 객체이다. Set에는 키가 없는 값이 저장된다.

삽입 순서를 기억하고, 키에 제한이 없는 Map과, 중복을 제거하는데 유용한 Set 물론 Set도 삽입순서를 기억한다.

일반적인 객체나 배열을 사용하는 것과 비교해서 특정 사항에서 해당 컬렉션들이 메모리 사용은 조금 늘어나지만 성능에서 압도적 우위를 보이니 기억해두는게 좋다. 사실 사용법도 간단한 편이다.

# 사용법

1. MAP :

  • new Map() – 맵을 만듭니다.
  • map.set(key, value) – key를 이용해 value를 저장합니다.
  • map.get(key) – key에 해당하는 값을 반환합니다. key가 존재하지 않으면 undefined를 반환합니다.
  • map.has(key) – key가 존재하면 true, 존재하지 않으면 false를 반환합니다.
  • map.delete(key) – key에 해당하는 값을 삭제합니다.
  • map.clear() – 맵 안의 모든 요소를 제거합니다.
  • map.size – 요소의 개수를 반환합니다.

2. SET :

  • new Set(iterable) – 셋을 만듭니다. 이터러블 객체를 전달받으면(대개 배열을 전달받음) 그 안의 값을 복사해 셋에 넣어줍니다.
  • set.add(value) – 값을 추가하고 셋 자신을 반환합니다.
  • set.delete(value) – 값을 제거합니다. 호출 시점에 셋 내에 값이 있어서 제거에 성공하면 true, 아니면 false를 반환합니다.
  • set.has(value) – 셋 내에 값이 존재하면 true, 아니면 false를 반환합니다.
  • set.clear() – 셋을 비웁니다.
  • set.size – 셋에 몇 개의 값이 있는지 세줍니다.

# 결론 

맵과 셋 둘다 이터러블 객체이며, 삽입순서를 기억한다. 맵은 키에 제한이 없고,

셋은 키는 없지만 값의 중복을 허용하지 않는다. 둘다 재정렬이 불가능하며,

일반적인 자료구조에 비해서 메모리 사용량이 높은 편이다. 다만 성능적으로 우위를 보이니

중복을 제거하거나, 삽입순서를 기억하고, 키를 조금 더 복잡하게 지정하고 싶다면 좋은 선택지이다.

반응형