m1ndy5's coding blog

JavaScript 객체: Set & Map 본문

프론트엔드/java script

JavaScript 객체: Set & Map

정민됴 2023. 5. 9. 17:21

Set 객체

중복되지 않은 유일한 값들의 집합(Set)

const set = new Set([1, 2, 3, 3);
console.log(set); // Set(3) {1, 2, 3}

// Set을 사용한 배열의 중복 요소 제거
const uniq = array => [...new Set(array)];
console.log(uniq([1, 1, 2, 3, 4])); // [1, 2, 3, 4]

// 요소 추가 Set.add()
set.add(4);
set.add(5).add(6); //도 가능

// 요소 존재 여부 확인 Set.has()
console.log(set.has(1)) // true

// 요소 삭제 Set.delete(), 일괄 삭제는 Set.clear()
set.delete(1);
set.clear();

집합 연산

// 교집합
const setA = new Set([1, 2, 3, 4]);
const setB = new Set([1, 2]);
console.log(setA.intersection(setB)) // Set(2) {1, 2}

// 합집합
console.log(setA.union(setB)) // Set(4) {1, 2, 3, 4}

// 차집합
console.log(setA.difference(setB)) // Set(2) {3, 4};

// 부분 집합과 상위 집합 확인
console.log(setA.isSuperset(setB)) // setA 는 setB의 상위 집합 -> true

Map 객체

키와 값의 쌍으로 이루어진 컬렉션

const map1 = new Map([['key1', 'value1'], ['key2', 'value2']]);
console.log(map1); // Map(2) {"key1" => "value1", "key2" => "value2"}

// 요소 추가 Map.set()
map1.set('key3', 'value3');
map1.set('key3', 'value3').set('k4', 'v4'); //도 됨

// 객체도 키값으로 사용될 수 있음
const user1 = {name: 'min', age: 25};
const map = new Map();

map.set(user1, "SE");

// 요소 get Map.get()
console.log(map.get(user1)

// 요소 존재 여부 확인 Map.has()
console.log(map.has(user1)) // boolean

// 요소 삭제 Map.delete(), 일괄 삭제 Map.clear()
map.delete(user1)

// Map.keys Map.values Map.entries 로 각각 key, value, 키-밸류 값을 갖는 이터레이터를 반환할 수 있음