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]
참고
'Javascript' 카테고리의 다른 글
특정 문자 위치 찾기 - indexOf 함수 (0) | 2024.08.25 |
---|---|
배열에 요소 추가, 삭제 (0) | 2024.08.25 |
배열 중복 제거하기 (0) | 2024.08.25 |
객체 접근 방법 (0) | 2024.08.25 |
배열 중복 카운트 (0) | 2024.08.25 |