수학적 집합을 구현하기 위한 자료구조이며 객체와 비슷하지만 다음과 같은 차이가 있다.
구분 | 배열 | Set객체 |
---|---|---|
동일한 값을 중복하여 포함 | O | X |
요소 순서에 의미 | O | X |
인덱스로 요소 접근 | O | X |
생성자 함수로 생성
Set 생성자 함수는 이터러블을 인수로 전달받아 Set 객체를 생성
const set1 = new Set([1,2,3])
console.log(set1) // Set(3) {1,2,3}
Set.prototype.intersection = function(set){
return new Set([...this].filter(v=>Set.has(v)))
}
const setA = new Set([1,2,3,4])
const setB = new Set([2,4])
console.log(setA.intersection(setB)) // Set(2) {2,4}
Set.prototype.difference = function(set){
return new Set([...this].filter(v=>!Set.has(v)))
}
const setA = new Set([1,2,3,4])
const setB = new Set([2,4])
console.log(setA.intersection(setB)) // Set(2) {1,3}
Map 객체는 키와 값의 쌍으로 이루어진 컬렉션
객체와 유사하지만 다음과 같은 차이가 있다.
구분 | 객체 | Map객체 |
---|---|---|
키로 사용할 수 있는 값 | 문자열 또는 심벌 값 | 객체를 포함한 모든 값 |
이터러블 | X | O |
요소 개수 확인 | Object.keys(obj).length | map.size |
Map 생성자 함수로 생성
이터러블을 인수로 전달받아 Map 객체 생성
인수로 전달되는 이터러블은 키와 값의 쌍으로 이루어진 요소로 구성되어야 함
const map1 = new Map([['key1', 'value1'], ['key2','value2']])
console.log(map1) // Map(2) {'key1'=>'value1' , 'key2'=>'value2'}