본문 바로가기
JavaScript 문법 시리즈

[JavaScript 문법] 13일차: 맵과 셋

by cogito21_js 2024. 8. 13.
반응형

Map 객체

Map 객체는 키-값 쌍을 저장하며, 키의 타입에 제한이 없습니다. 객체와 달리 Map은 삽입 순서를 기억합니다.

Map 생성

Map 객체는 new Map()을 사용하여 생성할 수 있습니다.

let map = new Map();

요소 추가

set 메서드를 사용하여 요소를 추가할 수 있습니다.

map.set('name', 'Alice');
map.set('age', 25);
console.log(map); // Map { 'name' => 'Alice', 'age' => 25 }

요소 접근

get 메서드를 사용하여 요소에 접근할 수 있습니다.

console.log(map.get('name')); // 'Alice'
console.log(map.get('age')); // 25

요소 삭제

delete 메서드를 사용하여 요소를 삭제할 수 있습니다.

map.delete('age');
console.log(map); // Map { 'name' => 'Alice' }

요소 확인

has 메서드를 사용하여 키가 존재하는지 확인할 수 있습니다.

console.log(map.has('name')); // true
console.log(map.has('age')); // false

모든 요소 삭제

clear 메서드를 사용하여 모든 요소를 삭제할 수 있습니다.

map.clear();
console.log(map); // Map {}

요소 개수

size 속성을 사용하여 요소의 개수를 확인할 수 있습니다.

let map = new Map();
map.set('name', 'Alice');
map.set('age', 25);
console.log(map.size); // 2

순회

forEach 메서드나 for...of 루프를 사용하여 Map의 요소를 순회할 수 있습니다.

map.forEach((value, key) => {
  console.log(key + ': ' + value);
});
// 출력:
// name: Alice
// age: 25

for (let [key, value] of map) {
  console.log(key + ': ' + value);
}
// 출력:
// name: Alice
// age: 25

Set 객체

Set 객체는 고유한 값을 저장하며, 값의 타입에 제한이 없습니다. 중복된 값은 저장되지 않습니다.

Set 생성

Set 객체는 new Set()을 사용하여 생성할 수 있습니다.

let set = new Set();

요소 추가

add 메서드를 사용하여 요소를 추가할 수 있습니다.

set.add(1);
set.add(2);
set.add(2); // 중복된 값은 무시됩니다.
console.log(set); // Set { 1, 2 }

요소 삭제

delete 메서드를 사용하여 요소를 삭제할 수 있습니다.

set.delete(2);
console.log(set); // Set { 1 }

요소 확인

has 메서드를 사용하여 값이 존재하는지 확인할 수 있습니다.

console.log(set.has(1)); // true
console.log(set.has(2)); // false

모든 요소 삭제

clear 메서드를 사용하여 모든 요소를 삭제할 수 있습니다.

set.clear();
console.log(set); // Set {}

요소 개수

size 속성을 사용하여 요소의 개수를 확인할 수 있습니다.

let set = new Set();
set.add(1);
set.add(2);
console.log(set.size); // 2

순회

forEach 메서드나 for...of 루프를 사용하여 Set의 요소를 순회할 수 있습니다.

set.forEach(value => {
  console.log(value);
});
// 출력:
// 1
// 2

for (let value of set) {
  console.log(value);
}
// 출력:
// 1
// 2

WeakMap 객체

WeakMapMap과 유사하지만, 키가 반드시 객체여야 하며 가비지 컬렉션의 대상이 됩니다.

WeakMap 생성

let weakMap = new WeakMap();

요소 추가

set 메서드를 사용하여 요소를 추가할 수 있습니다.

let obj = {};
weakMap.set(obj, 'value');

요소 접근

get 메서드를 사용하여 요소에 접근할 수 있습니다.

console.log(weakMap.get(obj)); // 'value'

요소 삭제

delete 메서드를 사용하여 요소를 삭제할 수 있습니다.

weakMap.delete(obj);
console.log(weakMap.get(obj)); // undefined

요소 확인

has 메서드를 사용하여 키가 존재하는지 확인할 수 있습니다.

console.log(weakMap.has(obj)); // false

WeakSet 객체

WeakSetSet과 유사하지만, 값이 반드시 객체여야 하며 가비지 컬렉션의 대상이 됩니다.

WeakSet 생성

let weakSet = new WeakSet();

요소 추가

add 메서드를 사용하여 요소를 추가할 수 있습니다.

let obj = {};
weakSet.add(obj);

요소 삭제

delete 메서드를 사용하여 요소를 삭제할 수 있습니다.

weakSet.delete(obj);
console.log(weakSet.has(obj)); // false

요소 확인

has 메서드를 사용하여 값이 존재하는지 확인할 수 있습니다.

console.log(weakSet.has(obj)); // false

결론

MapSet 객체는 고유한 데이터 구조를 제공하여 키-값 쌍과 고유한 값들을 효율적으로 관리할 수 있게 해줍니다. WeakMapWeakSet 객체는 메모리 관리에 유용합니다. 이번 글에서는 Map, Set, WeakMap, WeakSet 객체의 생성, 요소 추가 및 삭제, 확인, 순회 방법에 대해 배웠습니다. 다음 글에서는 모듈에 대해 알아보겠습니다.

다음 글에서 만나요!

 

반응형