2025-09-29 01:34

Tags: 자바스크립트 자료구조

  • 키-값 쌍을 저장하고 키의 순서를 기억하는 순회 가능한 컬렉션
  • 기존 객체]의 단점을 보완하여 모든 타입을 키로 사용할 수 있고, 성능과 편의성 면에서 장점
  • set, get, has, delete 등 명확한 메서드를 통해 데이터를 조작하며, for...of 루프나 forEach로 쉽게 순회할 수 있다.
특징맵 (Map)객체 (Object)
키 타입모든 타입 (원시, 객체, 함수 등)문자열 또는 심볼
순서 보장보장됨 (삽입 순서)보장되지 않음 (최신 명세에서 일부 보장)
크기 확인size 프로퍼티 (O(1) 시간 복잡도)Object.keys().length (O(n) 시간 복잡도)
성능잦은 추가/삭제 시 일반적으로 더 빠름단순 조회 및 적은 변경 시 빠름
이터레이션이터러블 프로토콜 내장, 순회 용이for...in, Object.keys/values/entries 필요
프로토타입프로토타입 없음, 키 충돌 위험 없음Object.prototype 상속, 충돌 가능성 있음
JSON 변환직접 변환 불가, 배열로 변환 후 가능JSON.stringify로 직접 변환 가능

이런 경우 맵(Map)을 사용하세요 ✅

  1. 키가 문자열이 아니어야 할 때: DOM 요소를 키로 사용하거나, 사용자 정의 객체를 키로 매핑해야 하는 경우 맵이 유일한 선택지입니다.
  2. 데이터의 순서가 중요할 때: 입력된 순서대로 처리해야 하는 데이터(예: 작업 )를 다룰 때 맵의 순서 보장 특성은 매우 유용합니다.
  3. 데이터의 추가와 삭제가 빈번하게 일어날 때: 맵은 특히 요소의 추가 및 삭제 작업에서 객체보다 더 나은 성능을 보이는 경향이 있습니다.
  4. 컬렉션의 크기를 자주 확인해야 할 때: size 프로퍼티는 매우 효율적으로 크기를 알려줍니다.
  5. 순수 데이터 저장소로 사용할 때: 프로토타입과의 충돌을 원천적으로 방지하고 싶을 때 맵이 더 안전합니다.

이런 경우 객체(Object)를 사용하세요 ✅

  1. 단순하고 정적인 데이터 구조일 때: 키가 모두 문자열이고, 데이터 구조가 한 번 정해진 후 거의 바뀌지 않는 경우(예: 설정 객체, JSON에서 파싱된 데이터) 객체가 더 가볍고 편리합니다.
  2. JSON과의 상호작용이 필요할 때: 서버와 데이터를 주고받는 등 JSON 형식으로의 변환이 필수적일 때 객체가 훨씬 간단합니다.
  3. 특정 로직을 포함하는 ‘객체’가 필요할 때: 데이터와 함께 메서드(동작)를 캡슐화하는 객체지향 프로그래밍의 개념을 활용할 때는 당연히 객체를 사용해야 합니다.
  • 핵심 요약:
    • 동적인 데이터를 안전하고 효율적으로 관리하고 싶다면 을,
    • 가볍고 정적인 데이터 덩어리나 JSON 호환성이 중요하다면 객체를 사용하는 것이 좋습니다.