JavaScript Set Map


JavaScript의 SetMap은 ES6(ECMAScript 2015)에서 새로 추가된 데이터 구조입니다. 이들은 고유한 특징과 사용 사례를 가지고 있으며, 특정 요구 사항을 처리하는 데 매우 유용합니다. 각각의 데이터 구조에 대해 자세히 살펴보겠습니다.

1. Set

Set은 중복된 값을 허용하지 않는 컬렉션입니다. Set 객체는 값의 집합을 저장하며, 각 값은 오직 한 번만 저장될 수 있습니다.

1.1 생성

Set을 생성할 때는 빈 Set을 만들거나, 배열 등의 이터러블 객체를 인자로 전달할 수 있습니다.

// 빈 Set 생성
const set = new Set();

// 배열로부터 Set 생성
const numbers = new Set([1, 2, 3, 4]);

1.2 주요 메서드

  • add(value): Set에 값을 추가합니다. 이미 존재하는 값은 추가되지 않습니다. set.add(1); set.add(2); set.add(1); // 중복된 값, 무시됨 console.log(set); // Set { 1, 2 }
  • delete(value): Set에서 특정 값을 삭제합니다. set.delete(1); console.log(set); // Set { 2 }
  • has(value): Set에 특정 값이 존재하는지 확인합니다. console.log(set.has(2)); // true console.log(set.has(1)); // false
  • clear(): Set의 모든 값을 삭제합니다. set.clear(); console.log(set); // Set {}
  • size: Set에 있는 값의 개수를 반환합니다. console.log(set.size); // 0

1.3 반복

SetforEach 메서드와 for...of 루프를 사용하여 반복할 수 있습니다.

const set = new Set([1, 2, 3]);

// forEach 사용
set.forEach(value => {
  console.log(value);
});

// for...of 사용
for (const value of set) {
  console.log(value);
}

1.4 Set의 특성

  • 중복 없는 데이터: Set은 중복을 허용하지 않습니다.
  • 순서 유지: 값이 삽입된 순서대로 반복됩니다.
  • 객체 참조: Set은 객체의 참조를 비교하기 때문에, 같은 값이라도 서로 다른 객체는 별개의 요소로 간주됩니다.

2. Map

Map은 키와 값의 쌍을 저장하는 컬렉션입니다. 키는 객체이든 기본 데이터형이든 상관없이 어떤 데이터 타입도 될 수 있으며, 값은 객체를 포함한 모든 데이터 유형이 될 수 있습니다.

2.1 생성

Map을 생성할 때는 빈 Map을 만들거나, 배열의 배열 형태로 초기화할 수 있습니다.

// 빈 Map 생성
const map = new Map();

// 배열로부터 Map 생성
const entries = [['key1', 'value1'], ['key2', 'value2']];
const mapFromArray = new Map(entries);

2.2 주요 메서드

  • set(key, value): Map에 키와 값을 추가하거나 기존 키의 값을 업데이트합니다. map.set('name', 'Alice'); map.set('age', 30);
  • get(key): 주어진 키에 대한 값을 반환합니다. console.log(map.get('name')); // Alice
  • delete(key): 주어진 키와 해당 값을 삭제합니다. map.delete('age'); console.log(map.get('age')); // undefined
  • has(key): 주어진 키가 Map에 존재하는지 확인합니다. console.log(map.has('name')); // true console.log(map.has('age')); // false
  • clear(): Map의 모든 키-값 쌍을 삭제합니다. map.clear(); console.log(map.size); // 0
  • size: Map에 있는 키-값 쌍의 개수를 반환합니다. console.log(map.size); // 0

2.3 반복

MapforEach 메서드와 for...of 루프를 사용하여 반복할 수 있습니다.

const map = new Map([
  ['name', 'Alice'],
  ['age', 30]
]);

// forEach 사용
map.forEach((value, key) => {
  console.log(`${key}: ${value}`);
});

// for...of 사용
for (const [key, value] of map) {
  console.log(`${key}: ${value}`);
}

2.4 Map의 특성

  • 키의 데이터 유형: Map의 키는 객체, 기본 데이터형 모두 가능하며, 모든 키는 독립적으로 비교됩니다.
  • 순서 유지: Map은 삽입된 순서대로 키-값 쌍을 반복합니다.
  • 키 중복 불가: 같은 키를 다시 사용하면 기존 값이 업데이트됩니다.

3. Set과 Map의 차이점

특성SetMap
저장할 데이터값만 저장 (키와 값이 동일)키와 값의 쌍을 저장
키 데이터형불필요 (값만 저장하므로)모든 데이터 타입 (키) 가능
중복 허용중복된 값은 저장되지 않음중복된 키는 존재할 수 없음 (값 업데이트)
순서 유지삽입된 순서대로 반복삽입된 순서대로 반복
크기size 속성으로 크기 확인size 속성으로 크기 확인

4. 사용 사례

  • Set:
  • 중복된 값을 제거해야 할 때.
  • 존재 여부를 빠르게 확인해야 할 때.
  • Map:
  • 키와 값을 쌍으로 저장하고 조회할 때.
  • 객체의 속성을 동적으로 추가하거나 변경할 때.

결론

SetMap은 JavaScript에서 매우 유용한 데이터 구조로, 각각의 특성과 장점을 이해하고 적절한 상황에서 활용하는 것이 중요합니다. Set은 중복을 허용하지 않는 컬렉션을 필요로 할 때 유용하고, Map은 키와 값의 쌍을 저장할 때 강력한 기능을 제공합니다. 이들 데이터 구조는 복잡한 데이터 처리와 효율적인 탐색을 돕는 중요한 도구입니다.


Leave a Reply

Your email address will not be published. Required fields are marked *