ES6(ECMAScript 2015) – Map, Set, WeakMap, WeakSet – 1 – Set의 사용과 메서드

ES6(ECMAScript 2015) - 객체 리터럴 확장 - 2 - 프로토타입 축약
ES6(ECMAScript 2015) – Map, Set, WeakMap, WeakSet – 1 – Set의 사용과 메서드

ES6(ECMAScript 2015) – Map, Set, WeakMap, WeakSet – 1 – Set의 사용과 메서드

Set이란?

Set은 ES6(ECMAScript 2015)에서 도입된 데이터 구조 중 하나로, 중복되지 않는 값을 저장하는 컬렉션입니다. 쉽게 말해, Set은 어떤 종류의 값이든 유일하게 보관할 수 있는 목록이라고 생각하면 됩니다. Set은 순서를 유지하며, 중복된 값을 허용하지 않기 때문에 유용하게 사용될 수 있습니다.

Set의 생성과 값 추가하기

Set은 다음과 같은 방법으로 생성할 수 있습니다.

const mySet = new Set(); // 빈 Set 생성

또는 초기값을 가진 Set을 생성할 수도 있습니다.

const mySet = new Set([1, 2, 3]); // 초기값이 있는 Set 생성

Set에 값을 추가하기 위해서는 add() 메서드를 사용합니다.

mySet.add(4); // 값 4를 Set에 추가

Set의 값 확인하기

Set에 특정 값이 존재하는지 확인하기 위해 has() 메서드를 사용할 수 있습니다.

mySet.has(4); // true 반환 (값 4가 Set에 존재)
mySet.has(5); // false 반환 (값 5가 Set에 존재하지 않음)

Set의 크기 확인하기

Set의 크기(원소의 개수)를 확인하기 위해 size 속성을 사용합니다.

mySet.size; // Set의 크기 반환

Set의 값 삭제하기

Set에서 특정 값을 삭제하기 위해서는 delete() 메서드를 사용합니다. 삭제가 성공하면 true를, 삭제할 값이 Set에 존재하지 않으면 false를 반환합니다.

mySet.delete(4); // 값 4를 Set에서 삭제

Set의 모든 값 삭제하기

Set에서 모든 값을 삭제하려면 clear() 메서드를 사용합니다.

mySet.clear(); // Set의 모든 값 삭제

Set의 값 순회하기

Set의 값을 순회하려면 forEach() 메서드나 for...of 루프를 사용할 수 있습니다.

mySet.forEach((value) => {
  console.log(value); // 각 값에 대해 작업 수행
});

for (const value of mySet) {
  console.log(value); // 각 값에 대해 작업 수행
}

Set의 값 배열로 변환하기

Set의 값을 배열로 변환하기 위해서는 Array.from() 메서드를 사용하거나 전개 연산자(...)를 활용할 수 있습니다.

const myArray = Array.from(mySet); // Set의 값들을 배열로 변환
const myArray = [...mySet]; // Set의 값들을 배열로 변환 (전개 연산자 사용)

Set의 활용 예시

Set은 중복을 허용하지 않는 특성을 가지고 있기 때문에 중복을 제거하고자 할 때 유용합니다. 예를 들어, 배열에서 중복된 값을 제거하기 위해 Set을 사용할 수 있습니다.

const myArray = [1, 2, 2, 3, 4, 4, 5];
const uniqueValues = [...new Set(myArray)]; // 중복 제거된 배열 생성

console.log(uniqueValues); // [1, 2, 3, 4, 5]

Set은 또한 합집합, 교집합, 차집합 등의 집합 연산을 수행할 때 유용하게 사용될 수 있습니다.

주의해야 할 점

  • Set은 값의 유일성을 기반으로 동작하기 때문에, 객체와 같은 참조 타입의 경우에는 참조 값이 유일한지 여부를 판단합니다. 따라서 두 객체가 동일한 속성을 가지고 있더라도 참조 값이 다르면 Set에는 서로 다른 값으로 취급됩니다.
  • Set은 === 연산자를 사용하여 값을 비교하기 때문에, 숫자 1과 문자열 ‘1’은 서로 다른 값으로 취급됩니다.
  • Set은 순서를 유지하기 때문에 값을 추가한 순서대로 반복문이나 순회 메서드를 사용하면 예상한 순서대로 값이 반환됩니다.

답글 남기기