Recent Posts
Recent Comments
Link
Today
Total
05-20 10:55
관리 메뉴

채린씨의 티스토리

[JavaScript] 37. Set 본문

자료구조, 알고리즘/JavaScript 기초 문법

[JavaScript] 37. Set

채린씨 2022. 3. 14. 03:14

* Set

- value만을 저장하며 중복을 허용하지 않는 Collection

- 다양한 자료형의 value를 허용함

- 생성: newSet()

 

* 요소 추가/삭제, 크기, 요소 존재 여부 확인

- 요소 추가: Set.add(value)

- 요소 삭제:  Set.delete(value)

- 요소 전체 삭제: Set.clear()

- 요소 개수 확인: Set.size

- 요소 존재 여부 확인: Set.has(value)

- set.add 호출 시 set이 반환되므로 체이닝(chaining) 가능

let blank_set = new Set();
let num_set = new Set([1, 2, 3, 4, 5]);
let str_set = new Set("Hello!");
let mix_set = new Set([1, "A", 2, "CD"]); // 하나의 set에 다양한 자료형의 value 허용

console.log(blank_set); // output: Set(0) {}
console.log(num_set); // output: Set(5) { 1, 2, 3, 4, 5 }
console.log(str_set); // output: Set(5) { 'H', 'e', 'l', 'o', '!' } (중복 허용 안함!!!)
console.log(mix_set); // output: Set(4) { 1, 'A', 2, 'CD' }

// add를 이용한 요소 추가
blank_set.add(1).add(1).add(3).add(5);
console.log(blank_set); // output: Set(3) { 1, 3, 5 } (중복 허용 안함!!!)

// size를 이용한 요소 개수 확인
console.log(blank_set.size); // output: 3

// has를 이용한 요소 존재 여부 확인
console.log(blank_set.has(1)); // output: true
console.log(blank_set.has(10)); // output: false

// delete를 이용한 요소 삭제
console.log(blank_set.delete(1)); // output: true (삭제가 이루어지면 true 반환)
console.log(blank_set.delete(10)); // output: false (삭제가 이루어지지 않으면 false 반환)
console.log(blank_set); // output: Set(2) { 3, 5 }

// clear를 이용한 요소 전체 삭제
blank_set.clear();
console.log(blank_set); // output: Set(0) {}

// add 호출 시 set이 반환됨
console.log(blank_set.add(10)); // output: Set(1) { 10 }

// add 호출 시 set이 반환되는 것을 이용한 체이닝(chaining)
blank_set.add(20).add(30);
console.log(blank_set); // output: Set(3) { 10, 20, 30 }

 

* Set 반복문

- Collection 객체인 Set이 가지고 있는 iterator 속성을 이용하여 for ... of 구문으로 반복문 수행 가능

- 모든 value값 반환: Set.keys(), Set.values() (set은 value만을 저장하므로)

- 모든 요소 반환: Set.entries()

let str_set = new Set("Hello!");

console.log(str_set);
// output: Set(5) { 'H', 'e', 'l', 'o', '!' } (중복 허용 안함!!!)

// keys를 이용해 str_set의 value값 확인
console.log(str_set.keys());
// output: [Set Iterator] { 'H', 'e', 'l', 'o', '!' }

// values를 이용해 str_set의 value값 확인
console.log(str_set.values());
// output: [Set Iterator] { 'H', 'e', 'l', 'o', '!' }

// str_set의 value값에 차례로 접근
for (let item of str_set.keys()) console.log(item);
// output: H e l o !

// str_set의 value값에 차례로 접근
for (let item of str_set.values()) console.log(item);
// output: H e l o !

// str_set의 각 요소(value)에 차례로 접근
for (let item of str_set) console.log(item);
// ouput: H e l o !

// str_set의 모든 요소에 접근
console.log(str_set.entries());
/* output: 
[Set Entries] {
  [ 'H', 'H' ],
  [ 'e', 'e' ],
  [ 'l', 'l' ],
  [ 'o', 'o' ],
  [ '!', '!' ]
} */
// map과의 호환 등을 이유로 위와 같이 출력되지만, set은 value만을 저장한다!!!

 

 

 

'자료구조, 알고리즘 > JavaScript 기초 문법' 카테고리의 다른 글

[JavaScript] 39. Date  (0) 2022.03.15
[JavaScript] 38. Math  (0) 2022.03.14
[JavaScript] 36. Map  (0) 2022.03.14
[JavaScript] 35. Collection  (0) 2022.03.13
[JavaScript] 34. 생성자  (0) 2022.03.13
Comments