javascript- Set

현우.·2024년 6월 18일

JavaScript

목록 보기
16/31
post-thumbnail

Set

자료 구조중 하나로 데이터 집합체다. Set의 값은 한번만 나타날 수 있으며 고유한 값이다.

const set =new Set([1,2,3]);
console.log(set);  // Set(3) { 1, 2, 3 }
  • new 연산자와 함께 Set객체를 생성하고 인자에는 배열이 전달된다.
  • Set을 만드는 방법
    • Set생성자 객체안에 배열 전달
    • 빈 Set( new Set() )을 만들고 add()메소드로 값을 추가

Set의 인스턴스 속성

size

Set 객체에 있는 값의 수를 반환

const set =new Set([1,2,3]);
console.log(set);  // Set(3) { 1, 2, 3 }
console.log(set.size); // 3

Set의 인스턴스 메소드

add(value)

Set 객체에 특정값을 가진 새 요소 추가

const set =new Set([1,2,3]);
set.add(4); 
console.log(set); //Set(4) { 1, 2, 3, 4 }
set.add(3);  // Set은 중복이 안된다.
console.log(set);  // Set(4) { 1, 2, 3, 4 }

delete(value)

Set 객체에 해당하는 요소를 제거

const set =new Set([1,2,3]);
set.add(4);
console.log(set); //Set(4) { 1, 2, 3, 4 }
console.log(set.delete(4)); // true 
console.log(set);// Set(3) { 1, 2, 3 }
  • delete()는 요소가 성공적으로 제거 되었는지 여부를 나타내는 Boolean 반환

clear()

Set 객체에서 모든 요소 제거

const set =new Set([1,2,3]);
console.log(set);  // Set(3) { 1, 2, 3 }
set.clear();
console.log(set); // Set(0) {}

has(value)

주어진 값을 가진 요소가 Set 객체에 있는지 여부를 나타내는 Boolean 반환

const set =new Set([1,2,3]);
console.log(set);  // Set(3) { 1, 2, 3 }
console.log(set.has(3)); // true

@@iterator

Iteration protocol을 구현하며 Set의 값을 산출하는 반복자를 반환한다.

const odds=new Set([1,3,5,7,9]);
const iterator = odds[Symbol.iterator]();
console.log(iterator.next());
// { value: 1, done: false }
console.log(iterator.next());
//{ value: 3, done: false }

Set 순회하기

Set은 배열을 인자로 받기 때문에 iterable하다고 할 수 있다.
따라서 iterable객체의 메소드인 keys(), values(), entries() 사용 가능하다.

const set =new Set([1,2,3]);
console.log(set.values()); //[Set Iterator] { 1, 2, 3 }
console.log(set.keys());  // [Set Iterator] { 1, 2, 3 }
console.log(set.entries()); 
// [Set Entries] { [ 1, 1 ], [ 2, 2 ], [ 3, 3 ] }

for..of 연산자 사용 가능하다.

const set =new Set([1,2,3]);
for(const value of set){
    console.log(value); // 1 2 3
}

forEach() 고차함수도 사용 가능하다.

const set =new Set([1,2,3]);
set.forEach(item => console.log(item)); // 1 2 3

배열에서 Set을 활용한 중복 요소 제거

const arr =[1,2,3,4,4,1];
const set =new Set([...arr]);
console.log(set);  //Set(4) { 1, 2, 3, 4 }
  • Spred를 사용해 쫙 펼펴진 요소들을 Set에 넣어 중복을 제거하였다.

두개의 Set 객체중에 공통된 요소만 뽑기

const set1 = new Set([1,2,3,4]);
const set2 = new Set([3,4,5,6]);

const newSet1= [...set1].filter(item => set2.has(item));
console.log(new Set(newSet1)); //  Set(2) { 3, 4 }
  • set1의 요소를 돌면서 set2가 가지고 있는 요소만 추출하여 새로운 배열을 반환하고 Set객체로 만든다.
profile
학습 기록.

0개의 댓글