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은 중복을 제거한 특정 문자열의 갯수를 구할 때 좋았습니다.
참조
자바스크립트 맵(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 |