a set is basically just a collection of unique values
set은 기본적으로 유일한 값들의 집합이다.
set을 만들 때는 new Set([array])
를 이용하면 된다. 아래의 코드를 보자.
const ordersSet = new Set(
['Pasta','Pizza','Pizza','Risotto','Pasta','Pizza'])
console.log(ordersSet)//Set(3) {'Pasta', 'Pizza', 'Risotto'}
중복된 요소없이 유니크한 요소 3개가 남게 된다.
배열이 아닌 문자열을 넣어도 문자열에서 유일한 문자 요소를 알려준다.
console.log(new Set('Lingling'))
//{'L', 'i', 'n', 'g', 'l'}
아래의 코드처럼 Set의 사이즈를 알 수 있고, 특정 요소가 들어있는지도 확인할 수 있으며, 요소를 추가하거나 삭제하는 것도 가능하다. Set은 직관적이라 알아보기 쉽다.
console.log(ordersSet.size) //3
console.log(ordersSet.has('Pizza'))//true
console.log(ordersSet.has('Bread'))//false
ordersSet.add('Garlic Bread')
ordersSet.add('Garlic Bread')
ordersSet.delete('Risotto')
// ordersSet.clear()
console.log(ordersSet);
Set은 iterable 하기 때문에 아래와 같이 for-of를 이용해서 루프를 돌 수 있다.
for(const order of ordersSet) console.log(order)
보통 Set을 많이 사용할 때는 배열에서 중복된 요소를 제거하고 싶을 때이다. 아래의 예시를 보자.
const staff = ['Waiter','Chef','Waiter','Manager','Chef','Waiter'];
const staffUnique = [...new Set(staff)];
console.log(staffUnique)
//converse set into array
console.log(new Set(staff).size)
console.log(new Set('Lingling').size)
위에서 말했다시피 Set을 생성하는 것은 new Set(배열)이다. 이렇게 중복된 요소를 없앤 뒤, 다시 배열로 만들 때에는 [...] 안에 spread operator를 사용하여 ...new Set(배열)
을 해주면 된다. Set은 배열과 다르게 인덱스가 없기 때문에 인덱스로 원소를 뽑아내는 것은 불가능하다.