Set
Set 객체는 중복되지 않는 유일한 값들의 집합이다. 배열과 유사하지만 다음과 같은 차이가 있다.
구분 | 배열 | Set 객체 |
---|
동일한 값을 중복으로 포함할 수 있다. | O | X |
요소 순서에 의미가 있다. | O | X |
인덱스로 요소에 접근 할 수 있다. | O | X |
- Set은 수학적 집합을 구현하기 위한 자료구조다. -> 교집합, 합집합, 차집합, 여집합 등을 구현할 수 있다.
Set 객체의 생성
- Set 생성자 함수는 이터럴블을 인수로 전달받아 Set 객체를 생성한다.
이때 이터러블의 중복된 값은 Set 객체에 요소로 저장되지 않는다.
const set1 = new Set([1,2,3,3,4]);
console.log(set1);
const set2 = new Set('hello');
console.log(set2);
요소 개수 확인
- 접근자 프로퍼티인 Set.prototype.size 프로퍼티를 사용한다.
요소 추가
- Set.prototype.add 메서드를 사용한다.
- 새로운 요소가 추가된 Set 객체를 반환한다.
- 자바스크립트의 모든 값을 요소로 저장 할 수 있다.
요소 존재 여부 확인
- 특정 요소 존재 확인 시, Set.prototype.has 메서드를 사용한다.
요소 삭제
- 특정 요소 삭제 시 Set.prototype.delete 메서드를 사용한다.
- 요소 값을 인수로 전달해야 한다.
요소 일괄 삭제
- Set.prototpye.clear 메서드를 사용한다.
- undefined 반환한다.
요소 순회
- Set.prototype.forEach 메서드를 사용한다.
- 첫 번째 인수: 현재 순회 중인 요소 값
- 두 번째 인수: 현재 순회 중인 요소 값 (같은 이유는 인터페이스를 통일하기 위함)
- 세 번째 인수: 현재 순회 중인 Set 객체 지체
- Set 객체는 이터러블이다. 따라서 for...of문으로 순회할 수 있고, 스프레드 문법, 배열 디스트럭처링의 대상이 될 수 있다.
집합 연산
교집합, 합집합, 차집합, 부분 집합과 상위 집합 책 참고..
2. Map
Map 객체는 키와 값의 쌍으로 이루어진 컬렉션이다. 객체와 유사하지만 다음과 같은 차이가 있다.
구분 | 객체 | Map |
---|
키로 사용할 수 있는 값 | 문자열 또는 심벌 값 | 객체를 포함한 모든 값 |
이터러블 | X | O |
요소 개수 확인 | Object.keys(obj).length | map.size |
Map 객체의 생성
- Map 생성자 함수는 이터러블을 인수로 전달받아 Map 객체를 생성한다.
이때 인수로 전달되는 이터러블은 키와 값의 쌍으로 이루어진 요소로 구성되어야 한다.
- 중복된 키를 갖는 요소가 존재할 수 없다.
const map1 = new Map([['key1','value1'],['key2','value2']]);
console.log(map1);
요소 개수 확인
- Map.prototype.size 프로퍼티를 확인한다.
요소 추가
- Map.prototype.set 메서드를 사용한다.
- 새로운 요소가 추가된 Map 객체를 반환한다.
- 중복된 키를 갖는 요소를 추가하면 값이 덮어진다.
- 객체를 포함한 모든 값을 키로 사용할 수 있다.
요소 취득
- Map.prototype.get 메서드를 사용한다.
- 존재하지 않을 경우 undefined를 반환한다.
요소 존재 여부 확인
- Map.prototype.has 메서드를 사용한다.
요소 삭제
- Map.prototype.delete 메서드를 사용한다. 삭제 성공 여부를 반환한다.
요소 일괄 삭제
- Map.prototype.clear 메서드를 사용한다. 언제나 undefined를 반환한다.
요소 순회
- Map.prototype.forEach를 사용한다.
- 첫 번째 인수: 현재 순회 중인 요소 값
- 두 번째 인수: 현재 순회 중인 요소 키
- 세 번째 인수: 현재 순회 중인 Map 객체 지체
- Map 객체는 이터러블이다. 따라서 for...of문 순회, 스프레드 문법, 배열 디스트럭처링 할당의 대상이 될 수 있다.
- Map 객체는 이터러블이면서 동시에 이터레이터인 객체를 반환하는 메서드를 제공한다.
Map 메서드 | 설명 |
---|
Map.prototype.keys | 키를 값으로 갖는 이터러블이면서 이터레이터인 객체 반환 |
Map.prototype.values | 값을 값으로 갖는 이터러블이면서 이터레이터인 객체 반환 |
Map.prototype.entries | 키와 값을 값으로 갖는 이터러블이면서 이터레이터인 객체 반환 |
- Map 객체는 요소의 순서에 의미를 갖지 않지만, Map 객체를 순회하는 순서는 다른 이터러블의 순회와 호환성을 유지하기 위해 요소가 추가된 순서를 따른다.