프로그래밍/Javascript

자바스크립트 고급 데이터 타입: Map과 Set 완벽 가이드

shimdh 2025. 2. 14. 11:09
728x90

자바스크립트에서 데이터를 효과적으로 저장하고 관리하는 것은 성능 최적화와 코드 가독성을 높이는 중요한 요소입니다. 특히, MapSet은 기존의 객체(Object)나 배열(Array)과는 차별화된 기능을 제공하여, 데이터 구조를 보다 효율적으로 다룰 수 있도록 도와줍니다. 이 글에서는 MapSet의 개념, 주요 특징, 활용법 등을 깊이 있게 탐구하고, 실무에서 어떻게 적용할 수 있는지 살펴보겠습니다.


📌 1. Map: 키-값 쌍을 효율적으로 관리하는 자료구조

🧐 Map이란?

Map키-값(Key-Value) 쌍을 저장하는 컬렉션으로, 기존 객체와 비슷한 역할을 하지만 보다 유연하고 강력한 기능을 제공합니다. 객체는 기본적으로 키로 string 또는 symbol만 허용하지만, Map모든 데이터 타입을 키로 활용할 수 있다는 점에서 큰 장점을 가집니다.

Map의 주요 특징

  • 다양한 키 사용 가능: 문자열뿐만 아니라 숫자, 객체, 함수 등을 키로 활용할 수 있습니다.
  • 순서 유지: 삽입된 순서를 유지하여 반복문을 사용할 때 입력한 순서대로 데이터를 불러올 수 있습니다.
  • 빠른 검색 및 삭제: 일반 객체보다 키를 이용한 검색과 삭제 연산이 더욱 효율적입니다.
  • 크기 확인이 간편: size 속성을 통해 저장된 요소의 개수를 손쉽게 알 수 있습니다.

🚀 Map의 사용 예시

// Map 생성 및 요소 추가
const userMap = new Map();
userMap.set('이름', '김철수');
userMap.set(1001, '회원 ID');
userMap.set({ role: 'admin' }, '관리자 계정');

// 값 가져오기
console.log(userMap.get('이름')); // 김철수

// Map의 크기 확인
console.log(userMap.size); // 3

// 요소 존재 여부 확인
console.log(userMap.has(1001)); // true

// 요소 삭제
userMap.delete(1001);
console.log(userMap.has(1001)); // false

// 모든 요소 출력 (순서 유지)
for (let [key, value] of userMap) {
    console.log(`${key}: ${value}`);
}

🎯 Map 활용 예시

Map은 특히 다음과 같은 경우에 유용하게 사용할 수 있습니다.

  1. 사용자 데이터 저장: 사용자 ID, 로그인 정보 등을 키로 활용하여 데이터 관리
  2. 캐싱 시스템: 자주 사용하는 데이터를 Map에 저장하여 빠르게 불러오기
  3. 키-값 매핑: 특정 데이터와 관련된 정보를 효율적으로 정리할 때

📌 2. Set: 중복 없는 데이터 컬렉션

🧐 Set이란?

Set고유한 값만 저장할 수 있는 컬렉션입니다. 기존 배열(Array)과 달리 중복된 요소를 자동으로 제거한다는 특징이 있으며, 데이터 정제 및 검색 작업에서 특히 유용하게 활용됩니다.

Set의 주요 특징

  • 중복된 값 자동 제거: 동일한 값을 여러 번 추가해도 한 번만 저장됩니다.
  • 삽입 순서 유지: 추가한 순서를 기억하여 반복할 때 해당 순서를 따릅니다.
  • 빠른 검색 및 삭제: 특정 값의 존재 여부를 빠르게 확인할 수 있습니다.

🚀 Set의 사용 예시

// Set 생성 및 요소 추가
const uniqueNumbers = new Set();
uniqueNumbers.add(1);
uniqueNumbers.add(2);
uniqueNumbers.add(3);
uniqueNumbers.add(2); // 중복된 값은 무시됨

// Set의 크기 확인
console.log(uniqueNumbers.size); // 3

// 특정 값 존재 여부 확인
console.log(uniqueNumbers.has(2)); // true
console.log(uniqueNumbers.has(4)); // false

// 요소 삭제
uniqueNumbers.delete(3);
console.log(uniqueNumbers.has(3)); // false

// 모든 요소 출력 (순서 유지)
for (let value of uniqueNumbers) {
    console.log(value);
}

🎯 Set 활용 예시

Set은 다음과 같은 상황에서 효과적으로 사용할 수 있습니다.

  1. 배열 중복 제거: 중복된 항목이 포함된 배열을 정제할 때
  2. 고유한 값 관리: 방문한 페이지 목록, 선택한 태그 등 중복을 방지해야 할 데이터 저장
  3. 집합 연산 수행: 교집합, 합집합 등의 집합 연산 구현

🔹 배열에서 중복 제거하기

배열을 Set으로 변환하면 중복된 요소가 자동으로 제거됩니다.

const numbers = [1, 2, 3, 3, 4, 5, 5, 6];
const uniqueSet = new Set(numbers);
const uniqueArray = [...uniqueSet];

console.log(uniqueArray); // [1, 2, 3, 4, 5, 6]

🔥 실전 활용: Map과 Set을 함께 사용하기

때로는 MapSet을 조합하여 더욱 강력한 기능을 구현할 수도 있습니다. 예를 들어, 웹 애플리케이션에서 사용자의 검색 기록을 저장하면서 중복된 검색어는 제거하고 싶다면 Set을 활용하고, 검색어별 관련 데이터를 저장하는 용도로 Map을 사용할 수 있습니다.

const searchHistory = new Set();
const searchResults = new Map();

// 새로운 검색어 추가
function addSearchTerm(term, results) {
    searchHistory.add(term);
    searchResults.set(term, results);
}

// 검색 기록 확인
function getSearchResults(term) {
    return searchResults.get(term) || '검색 결과 없음';
}

// 테스트
addSearchTerm('JavaScript', ['MDN', 'W3Schools', 'Stack Overflow']);
addSearchTerm('Set 자료구조', ['개발 블로그', 'MDN']);
addSearchTerm('JavaScript', ['새로운 자료']); // 중복 검색어 추가

console.log(searchHistory); // {'JavaScript', 'Set 자료구조'}
console.log(getSearchResults('JavaScript')); // ['새로운 자료']

🏆 결론: Map과 Set을 활용하여 데이터 관리 최적화하기

MapSet은 자바스크립트에서 데이터를 더욱 효율적으로 관리할 수 있도록 돕는 강력한 도구입니다. 적절한 상황에서 활용하면 데이터를 보다 효율적으로 저장하고 검색하며, 코드의 가독성과 유지보수성을 크게 향상시킬 수 있습니다.

Map은 키-값 쌍을 저장하며, 모든 데이터 타입을 키로 사용할 수 있어 객체보다 유연합니다.
Set은 중복을 허용하지 않는 데이터 구조로, 중복 제거와 검색 성능 최적화에 유용합니다.

728x90