본문 바로가기
개인공부/JavaScript

Map 과 Set

by BTSBRINGMEHERE 2022. 6. 15.

프로그래머스 이미지

Map

자바스크립트의 Map은 Object와 비슷한 점을 갖고 있습니다. Key와 Value의 형태로 데이터를 저장한다는 점이 비슷한 점입니다. 다만 Map의 Key값에 넣을 수 있는 자료형에 제약이 없습니다. 그래서 반복문을 사용할 수 있고 Key, Value만 따로 객체로 반환할 수 있다는 장점이 있습니다.

 

let map = new Map([
  [key1, value1],
  [key2, value2],
  [key3, value3],

]) // Map {"key1" => "value1", "key2" => "value2", "key3" => "value3"}
참고로 키값은 중복되면 나중에 등록된 key value 쌍으로 대체된다.
위 처럼 직접 키 값 쌍을 추가할 수도 있지만 여러 매서드들이 존재한다.

map.set(key,value) : key, value 저장 map자신을 반환하기 때문에
체이닝이 가능하다. map.set().set().set()....

map.get(key) : key에 해당하는 value를 반환한다.
map.has(key) : map에 key가 존재하는지 검사한다. boolean
map.delete(key) : key value쌍 삭제. 삭제되면 true boolean
map.clear() : 모든 요소 삭제
map.size() : 모든 key value 쌍 개수 추출.

중요한 매서드
map.keys() : 각 요소의 키로만 구성된 이터러블 객체를 반환한다. 
map.values() : 각 요소의 value로만 구성된 이터러블 객체를 반환한다.
map.entries() : 각요소의 키, 값 쌍으로 구성된 이터러블 객체를 반환.
*entries()는 선언하나 안하나 같다.
*for of 반복문을 사용하여 각각의 값들을 얻어낼 수도 있고
*Array.from() 매서드로 원하는 값을 배열로 만들 수 있어 유용하다.
*배열에서도 쓸 수 있는 매서드이며 배열에서 key는 index, value는 요소이다.

map.forEach((value, key, map) => {})

코딩테스트를 하면서 Map은 특정 문자열에 특정 숫자나 알파벳의 갯수를 구할 때 가장 좋았습니다.

 

Set

중복을 허용하지 않는 값을 모아놓는 객체입니다. 중복을 저장하려고 해도 저장되지 않습니다.

 

let set = new Set([value1, value2, ...]) 
set.add(value) : 수동으로 추가하는 방법
set.delete(value) : 값을 삭제하고, 삭제되면 true boolean
set.has(value) : 값 저장 유무 판단 boolean
set.clear() : 셋 요소 전부 삭제
set.size() : 셋에 저장된 전체 요소 개수
*for of 반복문 가능
set.forEach((value, valueAgain, set) => {}) : 2번째 인자 valueAgain은 
value와 같은 값으로 map과 통일하기 위해 만들어졌다. 즉 필요없다.

*set에서 값 하나를 가져오려면 어떻게 해야할까? 
  set에는 get 매서드가 없어서Array.from(set)으로 배열로 변환하여 준 뒤에
  값을 가져올 수 있다.

 

Set은 중복을 제거한 특정 문자열의 갯수를 구할 때 좋았습니다.

 

참조

https://velog.io/@gytlr01/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%A7%B5Map%EA%B3%BC-%EC%85%8BSet

 

자바스크립트 맵(Map)과 셋(Set)

이터러블 자료구조의 특징은 for of문을 쓸 수 있고 Array.from메서드를 통해 배열로 변화가 가능하다는 점이다. 일반객체도 Symbol.iterator 매서드를 적용하여 이터러블 객체로 만들 수 있는데 방법이

velog.io

 

'개인공부 > JavaScript' 카테고리의 다른 글

이벤트 루프  (0) 2022.05.26
DOM  (0) 2022.05.24
간단하게 공부한 재귀함수  (0) 2022.04.20
호이스팅  (0) 2022.04.19
Array 요소 추가/삭제  (0) 2022.04.11