-
Section 10. 자바스크립트 Set자바스크립트 2023. 4. 6. 18:02
Set은 표준 내장 객체 중 하나로서 중복되지 않는 값들의 집합을 말한다.
배열과의 차이는 다음과 같다
- 동일한 값을 여러 번 포함할 수 없다.
- 값들의 순서가 무의미하다.
I. 기본 사용법
// Set 생성 const set1 = new Set(); // add 메서드 - 요소 추가 set1.add(1); set1.add('A'); set1.add(true); console.log(set1); //{1, 'A', true}
이미 포함된 요소는 추가하지 않는다.
set1.add(1); set1.add(true); console.log(set1); //{1, 'A', true}
배열을 인자로 넣으면 생성 + 초기화를 한다. 그리고 중복된 요소가 제거가 된다.
const set2 = new Set([1, 1, 1, 'A', true]); console.log(set2); //{1, 'A', true}
has - 요소 포함여부 확인 메서드
// has 메서드 - 요소 포함여부 확인 console.log( set2.has(1), set2.has('A'), set2.has(4) ); //true true false
delete - 요소 제거 및 성공 여부를 반환하는 메서드
console.log( set2.delete('A'), //true set2.delete(true), //true set2.delete(100) //false ); console.log(set2); //{1}
add 메서드는 결과 셋을 반환한다.
const set3 = set2.add(2); console.log(set3); //{1, 2} set2 .add(3) .add(4) .add(5) // 참조형이므로 둘이 같은 Set을 가리킴 console.log(set2, set3); //{1, 2, 3, 4, 5} {1, 2, 3, 4, 5}
메서드 체이닝이 가능하고 참조형이므로 같은 Set을 가리킨다.
size 프로퍼티 - 요소의 개수를 반환한다.
// size 프로퍼티 - 요소의 개수 console.log( set2.size ); //5
keys, values, entries - 값 / 값 / [값, 값]을 반환하는 메서드. key를 value와 같이 취급한다.
// keys, values, entries 메서드 - 값 / 값 / [값, 값] 반환 // key를 value와 같이 취급 console.log( set2.keys(), //SetIterator {1, 2, 3, 4, 5} set2.values(), //SetIterator {1, 2, 3, 4, 5} set2.entries() //SetIterator {1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5} );
clear - 모든 요소들을 삭제하는 메서드
set2.clear(); console.log(set2, set3);
모든 요소들이 삭제가 됐다.
참조형 데이터의 경우
const objSet1 = new Set() .add({ x: 1, y: 2 }) .add({ x: 1, y: 2 }) .add([1, 2, 3]) .add([1, 2, 3]); // 각기 다른 것으로 인식 (참조하는 주소가 다르므로) console.log(objSet1);
Set은 add했을때 중복된 것은 추가가 되지 않는다. 하지만 출력문을 보니 값은 같아도 모두 add가 되어 출력된 것을 볼 수 있다. 즉, 값만 같을 뿐 서로 참조하는 주소가 다 다른 것 이라고 이해하면 된다.
const obj = { x: 1, y: 2 }; const arr = [1, 2, 3]; const objSet2 = new Set() .add(obj) .add(obj) .add(arr) .add(arr); // 같은 것들로 인식 console.log(objSet2)
중복된 것들은 add 되지 않았다.
II. 이터러블러서의 Set
배열이랑 문자열에서 쓰는 것과 동일하다.
먼저 배열과 set을 생성했다.
const arr = ['A', 'B', 'C', 'D', 'E']; const set = new Set(arr);
1. for ... of 문
for (item of set) { console.log(item); } //A //B //C //D //E
2. 스프레드 문법
const newArr = [...set]; console.log(newArr); //['A', 'B', 'C', 'D', 'E']
또한 set은 중복을 제거하기 때문에
// 활용 - 중복을 제거한 배열 반환 const arr1 = [1, 1, 1, 2, 2, 3, 4, 5]; const arr2 = [...new Set(arr1)]; console.log(arr2); //[1, 2, 3, 4, 5]
이런식으로도 활용이 가능하다.
3. 디스트럭쳐링
const [x, y] = set; console.log(x); //A console.log(y); //B
const [a, b, ...rest] = set; console.log(a); //A console.log(b); //B console.log(rest); //['C', 'D', 'E']
'자바스크립트' 카테고리의 다른 글
Section 10. 자바스크립트 이터러블 (0) 2023.04.07 Section 10. 자바스크립트 Map (0) 2023.04.06 Section 9. 자바스크립트 Symbol (0) 2023.04.06 Section 9. 자바스크립트 BigInt (0) 2023.04.06 Section 9. 자바스크립트 2, 8, 16진법과 비트 연산자 (0) 2023.04.06