[240428] 37장 Set과 Map

Set

  • 중복되지 않는 유일한 값들의 집합
  • 요소 순서에 의미 X
  • 인덱스로 요소에 접근 X
  • 수학적 집합을 구현하이 위한 자료구조
    • 교집합, 합집합, 차집합, 여집합 등을 구현할 수 있음

1. Set 객체의 생성

  • 이터러블을 인수로 전달 받음
const set = new Set();
console.log(set); 

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

2. 요소 개수 확인

  • size 프로퍼티 사용

3. 요소 추가

  • add 메서드 사용
  • 새로운 요소가 추가된 set 객체 반환해서 연속적으로 호출 가능
  • NaN 객체 같다고 평가하여 중복 추가 허용 x, 0과 -0도

4. 존재 여부 확인

  • has 메서드
set.has(2) // 2 있나 확인

5. 요소 삭제

  • delete 메서드 사용
  • 삭제 성공 여부는 boolean 으로 반환

6. 요소 일괄 삭제

  • clear 메서드

7. 요소 순회

  • forEach 메서드 사용
  • forEach(현재 순회 중인 요소 값, 현재 순회 중인 요소 값, 현재 순회 중인 Set 객체)
    • 1,2번째 인수는 같은 값인데, Array forEach 메서드와 인터페이스를 통일하기 위함임
  • Set 객체는 이터러블
    • for …of 순회
    • 스프레드 문법 가능
    • 배열 디스트럭처링 대상 가능

8. 집합 연산

교집합

Set.prototype.intersection = function (set) {
	return new Set([...this].filter(v=> set.has(v)));
};

합집합

Set.prototype.union = function (set) {
	return new Set([...this, ...set]);
}

차집합

Set.prototype.difference = function (set) {
	return new Set([...this].filter(v=> !set.has(v)));
};

부분 집합과 상위 집합

// this가 subset의 상위 집합인지 확인한다.
Set.prototype.isSuperset = function (subset) {
	const supersetArr = [...this];
	return [...subset].every(v=>supersetArr.includes(v));
};

Map

  • 키와 값의 쌍으로 이루어진 컬렉션이다.
  • map 과 객체의 차이
구분 객체 Map 객체
키로 사용할 수 있는 값 문자열 또는 심벌 값 객체를 포함한 모든 값
이터러블 X O
요소 개수 확인 Object.keys(obj).length map.size

1. map 객체의 생성

  • 이터러블을 인수로 전달 받아 Map 객체 전달
  • 키와 값의 쌍으로 이루어진 요소로 구성되어야 함
const map = new Map([['key1', 'value1'], ['key2', 'value2']]);
  • 중복된 키를 갖는 요소 존재 X

2. 요소 개수 확인

  • size 프로퍼티

3. 요소 추가

  • set 메서드 추가
map.set('key1','value1');
  • 이미 존재하는 키 추가하면 덮어써짐
  • NaN, -0 === 0 같다고 평가
  • 키 타입에 대한 제한 없음

4. 요소 취득

  • get 메서드 사용
  • key 값을 전달하면 value 반환
  • 없으면 undefined

5. 요소 존재 여부 확인

  • has 메서드 사용

6. 요소 삭제

  • delete 메서드 사용

7. 요소 일괄 삭제

  • cleat 메서드 사용

8. 요소 순회

  • forEach 메서드 사용
  • forEach( 현재 순회 중인 요소 값, 현재 순회 중인 요소 키, map 객체 자체)
  • Map 객체는 이터러블이다.
    • for of 가능
  • keys , values , entries 이터레이터인 객체를 반환하는 메서드 제공

Categories:

Updated:

Leave a comment