image

Set 함수

태그
Javascript
상세설명Set 함수에 대하여
작성일자2023.12.15

Set()

Set 은 클래스(class)이므로 new 키워드와 생성자를 사용하여 객체를 생성할 수 있습니다.

만약 인수를 전달하지 않으면 빈 Set 객체가 생성됩니다.

const set = new Set(); // {}

const set2 = new Set('apple'); 
// {"a","p","l","e"}

값 추가 - add()

const set = new Set(); 
set.add(1);
// {1}

//연쇄적 호출
set.add(1).add(2).add('apple');
// {1,2,"apple"}

값 삭제 - delete() / clear()

삭제하였다면 true를 반환, 삭제에 실패하였다면 false를 반환한다.

set.delete(1);
//{2,"apple"}

clear()

일괄 삭제 할 시 undefined 반환한다.

set.clear();
// {}

값 존재 여부 확인 - has()

if (set.has(1)) {
  console.log("1은 존재한다."); 
}
// "1은 존재한다."

값 개수 확인 - set.size

const set = new Set(); 
set.add(1).add(2).add('apple');

console.log(set.size);
// 3

세트 순회 - forEach() / for()

const set = new Set(); 
set.add(1).add(2).add('apple');

set.forEach((x) => console.log(x));

for (const x of set) {
  console.log(x);
}

// 1
// 2
// "apple" 

배열을 세트로 변경

만약 배열에 중복 값이 있다면 세트로 변경 시 중복 값은 사라진다.

const engSet = new Set(['a', 'b', 'c']); 
// {"a","b","c"}

// 중복 값 제거
const numSet = new Set([1, 1, 5, 6, 7, 4, 5]);
// {1,5,6,7,4}

집합

집합할 배열

const oneSet = new Set([1,3,4,5,7]);
const twoSet = new Set([2,3,4,5,6]);

합집합

두 set 을 합쳐 새로운 set 을 리턴 한다.

const union = new Set([...oneSet, ...twoSet]);
console.log(union)
// {1,3,4,5,7,2,6}
console.log('union Array',[...union])
// [1,3,4,5,7,2,6]

교집합

배열로 변환해주고 filter를 통해 set.has()를 사용해 교집합을 구한다.

const intersection = new Set([...oneSet].filter((x) => twoSet.has(x)))
console.log(intersection)
// {3,4,5}
console.log('intersection Array', [...intersection])
// [3,4,5]

차집합

!set.has()를 사용해 존재하지 요소만 새로운 set 으로 리턴 한다.

const differenceOne = new Set([...oneSet].filter((x) => !twoSet.has(x)))
console.log(differenceOne)
// {1,7}
console.log('differenceOne Array', [...differenceOne])
// [1,7]

const differenceTwo = new Set([...twoSet].filter((x) => !oneSet.has(x)))
console.log(differenceTwo)
// {2,6}
console.log('differenceOne Array', [...differenceTwo])
// [2,6]

참고