Set
객체에 대해 처음알았다!🤩
Set
객체는 유일한 값을 저장하는 객체이다.
즉, 하나의 Set
내부의 어떠한 값이든 그 Set
콜렉션 내에서 유일한 값이다.
또한,Set
은 객체이지만 키를 갖지 않는다.
요소값만을 갖는다!!
Set 객체를 배열로 변환하는 3가지 방법
Array.from()
const set = new Set([1, 2, 3]);
const arr = Array.from(set);
Spread Syntax
const set = new Set([1, 2, 3]);
const arr = [...set]
forEach
const set = new Set([1, 2, 3]);
const arr = [];
set.forEach((element) => {
arr.push(element);
})
Set을 활용하는 경우들
합집합 ( 여러개의 배열을 중복없이 하나의 배열로 만들기 )
let foo = [1,2,3]
let bar = [3,4,5]
let fooBar = Array.from(new Set([...foo, ...bar]))
주의할 점은 Set
은 중복을 허용하지 않지만,데이터타입을 구분
한다는 특징이있다. 즉 1과 "1"은 다른것으로 본다.
차집합 만들기
let foo = [1,2,3]
let bar = [3,4,5]
let fooSet = new Set(foo)
fooSet.delete(...bar)
let result = Array.from(fooSet)
console.log(result) // [1,2]
교집합 만들기
has
메서드를 사용하면 된다.
let foo = [1,2,3]
let bar = [3,4,5]
let fooSet = new Set(foo)
let barSet = new Set(bar)
let result = []
fooSet.forEach(v => {
if(barSet.has(v)){
result.push(v)
}
})
console.log(result)
신기한점은 forEach
를 사용할 수 있다는 점이다.
배열이 아닌데도!!
찾아보니, set.prototype.forEach()
메서드가 정의되어 있던 것이었다. 😊
Set객체의 주요 속성과 메서드
속성
Set.prototype.size
: 객체 내 값의 개수를 반환한다. 배열의 length처럼!
메서드
Set.prototype.add(value)
: 객체에 값 추가Set.prototype.clear()
: 객체 모두 제거Set.prototype.delete(value)
: 객체에 해당 값 제거Set.prototype.has(value)
: 객체에 해당 값 있는지 boolean을 반환
'개인공부 > TIL(Today I Learned)' 카테고리의 다른 글
TIL 51일차_알고리즘: 유클리드 호제법 (0) | 2021.03.10 |
---|---|
TIL 50일차_시간복잡도(Time Complexity) (0) | 2021.03.09 |
TIL 48일차_forEach메소드와 루프제어문 (0) | 2021.03.07 |
TIL 47일차_자료구조: 그래프와 트리 (0) | 2021.03.06 |
TIL 46일차_알고리즘문제_잘린 사각형의 개수 (0) | 2021.03.05 |