자바스크립트 Sets: 유기한 데이터를 위한 친절한 안내서
안녕하세요, 미래의 자바스크립트 마법사 여러분! 오늘 우리는 자바스크립트 Sets의 세계로 흥미로운 여행을 떠납니다. 프로그래밍에 새로운 사람이라면 걱정 마세요 - 저는 당신의 신뢰할 수 있는 안내자가 되겠습니다. 우리는 이 주제를 단계별로 탐구하겠습니다. 이 튜토리얼이 끝나면, Sets를 마치 프로처럼 조작할 수 있을 것입니다!
Set이란 무엇인가요?
코드에 들어가기 전에, Set이 무엇인지 이야기해 보겠습니다. 상상해 보세요. 당신이 구슬이 들어있는 가방을 가지고 있는데, 이 가방은 특별합니다 - 각 색상의 구슬 하나씩만 들을 수 있습니다. 자바스크립트에서 Set은 바로 그런 것입니다: 중복되지 않은 값을 포함할 수 있는 컬렉션입니다. 중복은 허용되지 않습니다!
문법: Set 생성
기본적인 것으로 시작해 보겠습니다. 새로운 Set을 어떻게 생성하는지 보세요:
let mySet = new Set();
이렇게 하면 됩니다! 지금 당신은 빈 Set을 생성했습니다. 그런데 초기 값으로 Set을 생성하고 싶다면 어떻게 하나요? 문제 없습니다:
let fruitSet = new Set(['apple', 'banana', 'orange']);
이제 당신은 세 가지 과일로 구성된 Set을 가지고 있습니다. 기억하세요, 'apple'을 다시 추가하려고 해도 포함되지 않습니다. Set은 중복된 값을 유지하지 않습니다.
파라미터: Set에 무엇을 넣을 수 있나요?
자바스크립트의 Sets는 매우 유연합니다. 다양한 유형의 값을 추가할 수 있습니다:
- 숫자
- 문자열
- 객체
- 배열
- 심지어 다른 Sets도!
예제를 보겠습니다:
let mixedSet = new Set([1, 'two', {three: 3}, [4, 5]]);
console.log(mixedSet);
이 코드를 실행하면, 우리의 Set이 이 모든 다른 유형의 값을 포함하고 있음을 볼 수 있습니다.
예제: Sets와 놀아보기
이제 기본적인 것을 알았으니, Sets를 조금 더 재미있게 사용해 보겠습니다!
추가하고 삭제하기
let colorSet = new Set();
// 요소 추가
colorSet.add('red');
colorSet.add('blue');
colorSet.add('green');
console.log(colorSet); // 출력: Set(3) { 'red', 'blue', 'green' }
// 중복 추가 시도
colorSet.add('red');
console.log(colorSet); // 출력: Set(3) { 'red', 'blue', 'green' }
// 요소 삭제
colorSet.delete('blue');
console.log(colorSet); // 출력: Set(2) { 'red', 'green' }
보셨죠, 'red'을 다시 추가하려고 했을 때 Set은 변하지 않았습니다. Set의 매력은 여기 있습니다 - 중복을 자동으로 처리해 줍니다!
요소 확인
Set에 특정 값이 있는지 확인하고 싶다면 has()
메서드를 사용하세요:
let animalSet = new Set(['dog', 'cat', 'bird']);
console.log(animalSet.has('dog')); // 출력: true
console.log(animalSet.has('fish')); // 출력: false
Set의 크기
Set에 몇 개의 고유한 요소가 있는지 확인하려면 size
프로퍼티를 사용하세요:
let numberSet = new Set([1, 2, 3, 4, 5, 5, 5]);
console.log(numberSet.size); // 출력: 5
우리가 세 개의 5를 추가했지만, Set은 그것을 하나로 계산합니다!
수학적 Set 연산
이제 수학 모자를 쓰고, Sets로 할 수 있는 몇 가지 연산을 살펴보겠습니다.
합집합
합집합은 두 Sets를 결합하여 모든 고유한 요소를 유지합니다:
let set1 = new Set([1, 2, 3]);
let set2 = new Set([3, 4, 5]);
let unionSet = new Set([...set1, ...set2]);
console.log(unionSet); // 출력: Set(5) { 1, 2, 3, 4, 5 }
교집합
교집합은 두 Sets 모두에 존재하는 요소만 유지합니다:
let set1 = new Set([1, 2, 3, 4]);
let set2 = new Set([3, 4, 5, 6]);
let intersectionSet = new Set([...set1].filter(x => set2.has(x)));
console.log(intersectionSet); // 출력: Set(2) { 3, 4 }
차집합
차집합은 첫 번째 Sets에 있지만 두 번째 Sets에 없는 요소를 유지합니다:
let set1 = new Set([1, 2, 3, 4]);
let set2 = new Set([3, 4, 5, 6]);
let differenceSet = new Set([...set1].filter(x => !set2.has(x)));
console.log(differenceSet); // 출력: Set(2) { 1, 2 }
자바스크립트 Set 참조
이제 우리가 논의한 모든 메서드와 프로퍼티, 그리고 몇 가지 더 추가된 것을 정리한 표를 보여드리겠습니다:
메서드/프로퍼티 | 설명 |
---|---|
new Set() |
새로운 Set을 생성합니다 |
add(value) |
새로운 요소를 Set에 추가합니다 |
delete(value) |
Set에서 요소를 제거합니다 |
has(value) |
값이 Set에 존재하는지 확인합니다 |
clear() |
Set에서 모든 요소를 제거합니다 |
size |
Set의 요소 개수를 반환합니다 |
forEach(callback) |
Set의 각 요소에 대해 함수를 호출합니다 |
values() |
Set의 모든 값을 포함하는 이터레이터를 반환합니다 |
keys() |
values() 와 동일합니다 |
entries() |
Set의 [value, value] 쌍을 포함하는 이터레이터를 반환합니다 |
이제, 여러분은 자바스크립트 Sets에 대한 충분한 이해를 갖추셨습니다. Sets는 중복을 피하고 데이터를 유기적으로 유지하는 친구들과 같습니다 - 중복이 없는 데이터를 다루는 데 매우 유용합니다.
Sets를 생성하고 조작하는 연습을 계속하면, 곧 자연스럽게 Sets를 사용하게 될 것입니다. 누구 knows? Set을 어디서 많이 볼 수도 있을 것입니다 - 마치 그 한 쌍의 닦이지 않은 신발처럼, 두 개의 닦이지 않은 신발이 없습니다!
coding을 계속하시고, 호기심을 유지하시고, 기억하세요: Sets의 세계에서, 독특함이 게임의 이름입니다!
Credits: Image by storyset