37.1. Set
- Set : 중복되지 않는 유일한 값들의 집합
- 배열과의 차이점
- 동일한 값을 중복하여 포함할 수 없음
- 요소 순서 무관
- 인덱스로 접근 불가
37.1.1. Set 객체의 생성
- Set 생성자 함수로 생성 가능
- 이터러블을 인수로 전달 받음
- 인수를 전달하지 않으면 빈 Set 객체 생성
- 중복된 값은 요소로 저장하지 않음
37.1.2. 요소 개수 확인
- Set.prototype.size 프로퍼티 : Set 객체의 요소 개수 확인
- size는 getter 함수만 존재하는 접근자 프로퍼티
37.1.3. 요소 추가
- Set.prototype.add 메서드 : Set 객체에 요소 추가
- 새로운 요소가 추가된 Set 객체 반환
- 중복된 요소 추가하는 경우 무시됨
- NaN, 0과 -0은 중복으로 평가하여 추가하지 않음
- 객체나 배열과 같은 자바스크립트의 모든 값을 요소로 저장 가능
37.1.4. 요소 존재 여부 확인
- Set.prototype.has 메서드 : 특정 요소 존재 여부 boolean 반환
37.1.5. 요소 삭제
- Set.prototype.delete 메서드 : 요소 삭제 후 성공 여부 boolean 반환
- 삭제하려는 요소값 자체를 전달해야 함
- 존재하지 않는 요소인 경우 무시됨
- 연속적으로 호출 불가
37.1.6. 요소 일괄 삭제
- Set.prototype.clear 메서드 : 모든 요소 일괄 삭제
- 항상 undefined 반환
37.1.7. 요소 순회
- Set.prototype.forEach 메서드 : 요소 순회
- 첫 번째, 두 번째 인수: 현재 순회 중인 요소값 (동일한 값)
- 세 번째 인수: Set 객체 자체
- Set 객체는 이터러블이므로 for...of 문, 스프레드 문법, 배열 디스트럭처링 가능
37.1.8. 집합 연산
교집합
합집합
차집합
- 집합 A에는 존재하지만 B에는 존재하지 않는 요소로 구성
부분 집합과 상위 집합
- 집합 A가 B에 포함되는 경우 A는 B의 부분 집합이며, B는 A의 상위 집합
37.2. Map
- Map : 키와 값의 쌍으로 이루어진 컬렉션
- 객체와의 차이점
- 객체를 포함한 모든 값을 키로 사용할 수 있음
- 이터러블
- map.size로 요소 개수 확인
37.2.1. Map 객체의 생성
- Map 생성자 함수로 생성
- 이터러블을 인수로 전달 받음 -> 키와 값의 쌍으로 이루어진 요소
- 인수를 전달하지 않으면 빈 Map 객체 생성
- 전달한 이터러블에 중복된 키를 갖는 경우 덮어쓰기 됨
37.2.2. 요소 개수 확인
- Map.prototype.size 프로퍼티 : 요소 개수 확인
- getter 함수만 존재하는 접근자 프로퍼티
- 숫자를 할당하여 객체의 요소 개수를 변경할 수 없음
37.2.3. 요소 추가
- Map.prototype.set 메서드 : 새로운 요소를 추가한 Map 객체 반환
- 연속적으로 호출 가능
- 중복된 키를 갖는 요소를 추가하면 값이 덮어쓰기 됨
- NaN, 0과 -0은 중복 요소로 평가하여 덮어쓰기 됨
- Map 객체는 키 타입 제한 없음
37.2.4. 요소 취득
- Map.prototype.get 메서드 : 키를 인수로 전달하여 값을 반환함
- 존재하지 않는 경우 undefined 반환
37.2.5. 요소 존재 여부 확인
- Map.prototype.has 메서드 : 특정 요소의 존재 여부 boolean 반환
37.2.6. 요소 삭제
- Map.prototype.delete 메서드 : 삭제 성공 여부 boolean 반환
- 존재하지 않는 키를 전달하는 경우 무시됨
- 연속적으로 호출 불가
37.2.7. 요소 일괄 삭제
- Map.prototype.clear 메서드 : 요소 일괄 삭제
- 항상 undefined 반환
37.2.8. 요소 순회
- Map.prototype.forEach 메서드 : 객체의 요소 순회
- 첫 번째 인수: 순회 중인 요소 값
- 두 번째 인수: 순회 중인 요소 키
- 세 번째 인수: 순회 중인 Map 객체 자체
- Map 객체는 이터러블이므로 for...of 문, 스프레드 문법, 배열 디스트럭처링 가능
- 또한 이터레이터인 객체를 반환하는 메서드 제공
- Map.prototype.keys
- Map.prototype.values
- Map.prototype.entries
[출처] 모던 자바스크립트, Deep Dive