Set은 JavaScript에서 고유한 값의 집합을 관리하기 위한 객체이다.
배열과 비슷해 보이지만, 중복된 값을 허용하지 않는다는 점이 다르다.
(인덱스X, 중복 값X)
사용 방법
🖥️ javascript
const mySet = new Set();
// 값 추가
mySet.add(1);
mySet.add(5);
mySet.add(1); // 중복된 값은 무시됨
console.log(mySet); // Set(2) {1, 5}
// 값 확인
console.log(mySet.has(1)); // true
console.log(mySet.has(3)); // false
// 값 삭제
mySet.delete(1);
console.log(mySet); // Set(1) {5}
// 크기 확인
console.log(mySet.size); // 1
// Set 순회
mySet.add(10);
mySet.forEach(value => console.log(value)); // 5, 10
활용 예시
1. 중복 제거
🖥️ javascript
const numbers = [1, 2, 3, 3, 4, 5, 5];
const uniqueNumbers = [...new Set(numbers)];
console.log(uniqueNumbers); // [1, 2, 3, 4, 5]
2. 교집합, 합집합, 차집합 연산
🖥️ javascript
const setA = new Set([1, 2, 3]);
const setB = new Set([3, 4, 5]);
// 교집합
const intersection = new Set([...setA].filter(x => setB.has(x)));
console.log(intersection); // Set(1) {3}
// 합집합
const union = new Set([...setA, ...setB]);
console.log(union); // Set(5) {1, 2, 3, 4, 5}
// 차집합
const difference = new Set([...setA].filter(x => !setB.has(x)));
console.log(difference); // Set(2) {1, 2}
Map은 키-값 쌍을 관리하기 위한 객체로, Object와 비슷하지만,
키의 유형과 삽입 순서를 더 엄격하게 관리한다. (중복 키X, 중복 값O)
사용 방법
🖥️javascript
const myMap = new Map();
// 값 추가
myMap.set('key1', 'value1');
myMap.set(2, 'value2');
myMap.set({}, 'value3'); // 객체를 키로 사용
// 값 읽기
console.log(myMap.get('key1')); // value1
console.log(myMap.get(2)); // value2
// 값 확인
console.log(myMap.has('key1')); // true
console.log(myMap.has('key2')); // false
// 값 삭제
myMap.delete(2);
console.log(myMap); // Map(2) {'key1' => 'value1', {} => 'value3'}
// 크기 확인
console.log(myMap.size); // 2
// Map 순회
myMap.forEach((value, key) => console.log(`${key}: ${value}`));
// 출력: key1: value1, [object Object]: value3
활용 예시
1. 데이터 저장 및 검색
🖥️ javascript
const userRoles = new Map();
userRoles.set('admin', { canEdit: true, canDelete: true });
userRoles.set('user', { canEdit: false, canDelete: false });
console.log(userRoles.get('admin').canEdit); // true
2. 키로 객체 사용
🖥️ javascript
const objKey = { id: 1 };
const map = new Map();
map.set(objKey, 'Object Value');
console.log(map.get(objKey)); // Object Value
