개인공부/TIL(Today I Learned)
TIL 49일차_Set 객체
soon327
2021. 3. 8. 01:40
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을 반환