코딩테스트/프로그래머스 기초 트레이닝

[Javascript] Set 객체

dev_swH 2023. 6. 10. 23:00

오늘 주사위 게임2와 간단한 식 계산하기 문제에서 다른 사람의 풀이를 보다가

Set 객체를 이용한 코드를 두 번이나 발견했다.

학원에서도 JS책에서도 배운 적 없는 생소한 객체였는데,

ES6부터 추가된 객체라고 하여 초급 레벨이나마 간단히 정리해보기로 했다.

 

set은 다른 프로그래밍 언어에는 이미 존재하던 데이터 타입(= 데이터 집합 = 데이터 리스트)이라고 한다.

중복되는 값을 가지지 않는 데이터라는 점이 포인트다.

생성자 new Set() 으로 set을 만들 때 매개변수(여기서는 iterable 반복자라고 부른다. 왜냐하면 Set 객체는 요소를 순회시켜 콜백함수나 반복문 같은 작업을 할 수 있기 때문이다.)로

1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5

이렇게 중복된 값을 아무리 넣어봤자

만들어진 Set에는 {1,2,3,4,5} 만 들어가있게 된다.

객체를 생성할 때 알아서 연산을 해준다는 뜻이다!!!

값에는 undefined과 NaN도 넣을 수 있다고 한다.

 

그리고 자료형에 관계없이 저장할 수 있다.

숫자를 넣으면 숫자로 들어가고

문자열은 문자열로 들어간다.

불 자료형은 반복자가 아니므로 저장할 수 없다.

배열을 넣으면 그 배열의 요소(원시값)가 객체값으로 저장된다.

{a:1, b:2} 같이 객체 자체를 값으로 넣을 수도 있다.

 

다양한 예시와 메소드 설명은 공식 문서와 아래 블로그를 참고하면 좋다.

처음에 공식 문서만 읽었을 때는 감이 잘 안 왔는데, 블로그를 먼저 읽고 공식 문서를 다시 읽으니 훨씬 이해가 잘 됐다.

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Set

 

Set - JavaScript | MDN

Set 객체는 자료형에 관계 없이 원시 값과 객체 참조 모두 유일한 값을 저장할 수 있습니다.

developer.mozilla.org

 

https://medium.com/@khwsc1/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-es6-set%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90-9b7294dfba99