Map과 Set

한별·2024년 4월 23일

Javascript

목록 보기
20/25
post-thumbnail

Map, Set은 자료구조 중 하나로 기존의 객체나 배열보다 데이터의 구성, 검색, 사용을 효율적으로 처리할 수 있도록 한다.

Map

: key - value로 구성
: 고유한 key에 value가 저장되어 있다.

객체와 다른 점이 뭐지?

Mapobject
key모든 타입 가능문자열/Symbol만 가능
크기size() 함수배열로 변환한 후 length를 이용
값 전부 제거clear() 함수delete 연산자로 하나씩 삭제
키 존재 여부has() 함수obj.key로 undefined 여부 체크해야 함.
(저장된 값이 undefined인 경우 모호해짐)
반복문for offor in
성능일반적으로 좋음일반적으로 나쁨

아하! Map은 Object와 다르게 어떤 타입이든 key 값으로 사용 가능하고 다양한 함수를 제공해서 편리하게 데이터를 다를 수 있군!

Map 생성

const map = new Map();

데이터 추가

map.set('one', 1);
map.set('two', 2);
map.set('three', 3);
map // Map(3) { 'one' => 1, 'two' => 2, 'three' => 3 }

key를 이용하여 값 조회

map.get('one'); // 1
map.get('apple'); // undefined

데이터 삭제

map.delete('three'); // true
map // Map(2) { 'one' => 1, 'two' => 2 }

Map의 크기

map.size // 2

특정 key 값 존재 여부

map.has('two'); // true
map.has('apple'); // false

반복

keys, values, entries 함수를 이용하면 Map Iterator가 반환되고 for-of 문을 이용하여 Map의 데이터들을 반복할 수 있게 된다.

map.keys(); // [Map Iterator] { 'one', 'two' }
map.values(); // [Map Iterator] { 1, 2 }
map.entries(); // [Map Entries] { [ 'one', 1 ], [ 'two', 2 ] }

for (const [key, value] of map.entries()) {
  console.log(key, value);
}

Set

: 고유한 값을 저장하는 자료구조
: Map과 다르게 key 없이 value만 저장

Set 생성

생성자로 배열을 넘겨주면 그 값으로 set이 생성된다.

const set = new Set(); // Set(0) {}
const numSet = new Set([1, 2, 3]); // Set(3) { 1, 2, 3 }

데이터 추가

set.add('value1');
set.add('value2');
set.add('value2'); // 중복
set.add('value3');
set; // Set(3) { 'value1', 'value2', 'value3' }

데이터 삭제

set.delete('value3'); // true
set.delete('value4'); // false
set; // Set(2) { 'value1', 'value2' }

Set의 크기

set.size // 2

value 존재 여부 확인

set.has('value2'); // true
set.has('value4'); // false

반복

Map과 같은 방식으로 Set iteratorfor-of 문을 이용한다. 하지만 set은 key를 가지지 않기 때문에 values만을 사용한다.

for (const value of set.values()) {
  console.log(value);
}

모든 값 제거

set.clear();
set; // Set(0) {}
profile
글 잘 쓰고 싶어요

0개의 댓글