JavaScript의 Map, Set, Object 차이와 메서드 정리

2025-05-01

  • JAVASCRIPT
  • DATA STRUCTURES

JavaScript에서 자주 사용하는 대표적인 자료구조인 Object, Map, Set은 모두 key-value 저장 혹은 값 저장에 사용되지만, 그 구조와 목적, 메서드에서 차이가 큽니다. 알고리즘 문제를 풀거나 웹 애플리케이션을 구현할 때 각각의 자료구조를 적절히 선택하는 것이 중요합니다. 이 글에서는 세 가지 자료구조의 차이점, 장단점, 주요 메서드를 예제와 함께 정리합니다.


1. Object

특징

  • key-value 형태로 데이터를 저장
  • key는 문자열 또는 Symbol만 가능
  • JSON 구조와 호환이 좋음
  • for...in, Object.keys(), Object.entries() 등을 통해 순회

장점

  • 간단하고 직관적인 문법
  • JSON과의 호환성

단점

  • key 타입 제한 (객체 사용 불가)
  • 순서 보장 불확실
  • .size 없음 (길이 확인은 Object.keys().length 사용)

주요 메서드 예시

const obj = { a: 1 };
obj["b"] = 2;
delete obj["a"];
console.log("b" in obj); // true
console.log(Object.entries(obj)); // [['b', 2]]

2. Map

특징

  • key-value 구조
  • key에 모든 타입 사용 가능 (객체, 함수, 숫자 등)
  • 삽입 순서 유지
  • 반복과 조작에 특화된 메서드 제공 (set, get, has, delete, clear)

장점

  • 다양한 key 타입 사용 가능
  • 삽입 순서 보장
  • .size 속성 제공

단점

  • 문법이 다소 복잡 (.set(), .get())

주요 메서드 예시

const map = new Map();
map.set('x', 100);
map.set({}, 'objectKey');
console.log(map.get('x')); // 100
console.log(map.size); // 2
map.delete('x');
map.clear();

3. Set

특징

  • 중복 없는 값들만 저장
  • 값 자체가 key 역할
  • 삽입 순서 유지
  • .add(), .has(), .delete(), .clear() 제공

장점

  • 중복 제거 자동 처리
  • 빠른 포함 여부 검사
  • 순서 보장

단점

  • key-value 저장 불가 (값만 저장)

주요 메서드 예시

const set = new Set();
set.add(1);
set.add(2);
set.add(1); // 중복 무시
console.log(set.has(1)); // true
set.delete(2);
set.clear();

4. 비교 요약표

항목 Object Map Set
구조 key → value key → value 값만 저장
키 타입 문자열, Symbol 모든 타입 가능 값 자체가 key
순서 보장 ❌ 불확실 ✅ 삽입 순서 유지 ✅ 삽입 순서 유지
중복 허용 키 중복 ❌ 키 중복 ❌ 값 중복 ❌
크기 확인 Object.keys().length .size .size
존재 확인 'key' in obj .has(key) .has(value)
추가 obj[key] = val .set(key, val) .add(val)
삭제 delete obj[key] .delete(key) .delete(val)
전체 삭제 {} 재할당 필요 .clear() .clear()
반복 방법 for...in, Object.keys() for...of, .forEach() for...of, .forEach()

각 자료구조는 목적에 따라 잘 골라서 사용해야 합니다. 예를 들어:

  • Object: JSON 데이터 다룰 때, 간단한 구조 필요할 때
  • Map: 다양한 키를 사용할 때, 반복이 많을 때
  • Set: 유일한 값 목록 필요할 때, 빠른 검색이 필요할 때

알고리즘 문제를 풀거나 데이터 구조를 설계할 때 위 기준을 잘 기억해두면 효율적입니다.

Algorithm ...

근황 정리...