오늘 주사위 게임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
'코딩테스트 > 프로그래머스 기초 트레이닝' 카테고리의 다른 글
[Javascript] 수열과 구간 쿼리 3 (0) | 2023.06.27 |
---|---|
[Javascript] 날짜 비교하기 (0) | 2023.06.23 |
[Javascript] 특이한 이차원 배열 1 (0) | 2023.06.13 |
[Javascript] 특이한 이차원 배열 2 - every() (0) | 2023.06.13 |
[Javascript] 부분 문자열 이어 붙여 문자열 만들기 - 구조분해 (0) | 2023.06.06 |
[Javascript] 0 떼기 (0) | 2023.06.06 |
[Javascript] for 반복문에서 i를 2씩 증가하는 법 (0) | 2023.06.06 |
[Javascript] l로 만들기 (0) | 2023.06.05 |