Map Set

정호·2026년 2월 12일

JavaScript

목록 보기
14/14

Map & Set 완벽 정리

배열(Array)만 쓰다가 특정 상황에서 막힐 때가 있는데, 그때 꺼내 쓰는 게 Map이랑 Set임. 중복 제거랑 탐색 속도 면에서 효율이 압도적이라 정리

1. Set (세트)

Set중복을 허용하지 않는 데이터 집합임. 값만 저장하는데, 똑같은 걸 두 번 넣어도 하나만 남음.

특징

  • 중복된 값은 알아서 걸러짐.
  • 특정 값이 있는지 확인할 때 has()를 쓰는데, 배열의 includes()보다 훨씬 빠름 (O(1)O(1)).
const mySet = new Set();

mySet.add(1);
mySet.add(2);
mySet.add(2); // 중복이라 안 들어감

console.log(mySet.has(1)); // true
console.log(mySet.has(3)); // false
console.log(mySet.size);   // 2 (개수 확인)

// ✅ 꿀팁: 배열 중복 제거 한 줄 컷
const arr = [1, 2, 2, 3, 3];
const uniqueArr = [...new Set(arr)]; // [1, 2, 3]

2. Map ()Map은 Key() - Value() 쌍으로 저장하는 구조임. 객체({})랑 비슷하지만 코테에선 Map이 훨씬 편함.특징키값으로 숫자, 객체 등 아무거나 다 쓸 수 있음.size로 데이터가 몇 개인지 바로 확인 가능.데이터가 들어온 순서가 유지됨.JavaScriptconst myMap = new Map();

myMap.set('바키', '격투가');
myMap.set('죠죠', '스탠드사');
myMap.set(123, '숫자 키 가능');

console.log(myMap.get('바키')); // '격투가'
console.log(myMap.has('죠죠')); // true (키 있는지 확인)
console.log(myMap.size);        // 3

구분,Array (배열),Set / Map
속도,includes() 쓰면 O(N) (느림),has() 쓰면 O(1) (개빠름)
중복,상관없음 (다 들어감),중복 불가 (특히 Set)
용도,순서대로 저장하거나 인덱스 접근할 때,빠른 탐색이나 빈도수 셀 때

실전 예시: 숫자 개수 세기
배열에 숫자가 각각 몇 개씩 있는지 셀 때 Map 쓰면 깔끔함.

const arr = [1, 1, 2, 3, 1, 2];
const counts = new Map();

arr.forEach(num => {
  // 있으면 가져와서 +1, 없으면 0에서 +1
  counts.set(num, (counts.get(num) || 0) + 1);
});

console.log(counts.get(1)); // 3

✅ 정리: 단순히 들어있는지 체크만 할 거면 Set, 이름표 붙여서 관리하거나 개수 세야 하면 Map 쓰면 됨. 성능 차이 때문에 큰 데이터 다룰 땐 필수임.

profile
열심히 기록할 예정🙃

0개의 댓글