문제21 : set은 어떻게 만드나요? 다음 중 set을 만드는 방법으로 올바른 것을 모두 고르시오.
1) let x = {1, 2, 3, 5, 6, 7};
2) let x = {};
3) let x = new Set('javascript');
4) let x = new Set(range(5));
5) let x = new Set();
답) 3번, 5번
🔹 new Set()이란?
Set은 중복을 허용하지 않는 데이터 구조야. 즉, 같은 값을 여러 번 넣어도 한 번만 저장
const mySet = new Set([1, 2, 3, 3, 4, 4, 5]);
console.log(mySet); // Set(5) { 1, 2, 3, 4, 5 }
✅ 중복된 값이 자동으로 제거됨!
1️⃣ Set 기본 사용법
const numbers = new Set(); // 빈 Set 생성
numbers.add(1);
numbers.add(2);
numbers.add(2); // 중복 값 → 추가되지 않음
numbers.add(3);
console.log(numbers); // Set(3) { 1, 2, 3 }
console.log(numbers.size); // 3 (요소 개수)
👉 add(value)로 값을 추가하고, 중복 값은 자동으로 제거!
2️⃣ Set의 주요 메서드
메서드 | 설명 | 예제 |
add(value) | 값을 추가 | set.add(4); |
delete(value) | 특정 값을 제거 | set.delete(2); |
has(value) | 값이 있는지 확인 | set.has(1); // true |
size | 요소 개수 반환 | set.size; // 3 |
clear() | 모든 요소 제거 | set.clear(); |
const mySet = new Set([1, 2, 3]);
console.log(mySet.has(2)); // true (값 존재 확인)
mySet.delete(2); // 2 삭제
console.log(mySet.has(2)); // false
console.log(mySet.size); // 2
👉 has(value)로 존재 여부 확인하고, delete(value)로 삭제 가능!
3️⃣ Set을 활용한 중복 제거
배열에서 중복을 쉽게 제거할 수 있어!
const numbers = [1, 2, 2, 3, 4, 4, 5];
const uniqueNumbers = [...new Set(numbers)];
console.log(uniqueNumbers); // [1, 2, 3, 4, 5]
👉 new Set(배열)을 쓰면 중복이 자동으로 제거됨!
👉 그리고 **전개 연산자(...)**를 사용해서 다시 배열로 변환하면 끝! 🚀
4️⃣ Set 순회 (forEach, for...of)
✅ forEach 사용
const mySet = new Set(["apple", "banana", "cherry"]);
mySet.forEach(value => {
console.log(value);
});
// apple
// banana
// cherry
✅ for...of 사용
for (let item of mySet) {
console.log(item);
}
// apple
// banana
// cherry
👉 배열처럼 반복문을 돌릴 수 있음!
5️⃣ Set을 Array로 변환
const mySet = new Set([10, 20, 30]);
const myArray = [...mySet];
console.log(myArray); // [10, 20, 30]
👉 Set → 배열 변환은 [...Set]
6️⃣ Set과 Array 비교
특징 | Set | Array |
중복 허용 | ❌ 안 됨 | ✅ 됨 |
요소 개수 | .size | .length |
순서 보장 | ✅ 순서 유지됨 | ✅ 유지됨 |
요소 제거 | .delete(value) | filter() / splice() |
📌 중복을 허용하지 않는 데이터 저장이 필요하면 Set이 유리함!
7️⃣ Set 활용 예제
✅ 두 배열의 교집합 구하기
const setA = new Set([1, 2, 3, 4]);
const setB = new Set([3, 4, 5, 6]);
const intersection = [...setA].filter(num => setB.has(num));
console.log(intersection); // [3, 4]
👉 filter()와 has()를 사용해 공통 요소만 추출!
✅ 배열 중복 값 찾기
const arr = [1, 2, 2, 3, 4, 4, 5];
const duplicates = arr.filter((item, index) => arr.indexOf(item) !== index);
console.log([...new Set(duplicates)]); // [2, 4]
👉 중복된 값만 찾아내서 중복 없이 반환!
8️⃣ Set 정리
✅ new Set() → 중복을 허용하지 않는 컬렉션
✅ .add(value) → 값 추가
✅ .delete(value) → 값 삭제
✅ .has(value) → 값 존재 여부 확인
✅ new Set(배열) → 중복 제거 가능!
✅ [...set] → Set을 배열로 변환 가능!
* 위 포스팅은 챗GPT 답변을 토대로 작성되었습니다!
'JavaScript' 카테고리의 다른 글
[JS] 코딩테스트 027~029 - 객체 만들기(중요)****, For문의 응용 (2) | 2025.02.17 |
---|---|
[JS] 코딩테스트 022~026 - 대문자, 소문자 변환 (0) | 2025.02.17 |
[JS] 코딩테스트 019~020 - 제곱근,거듭제곱 Math.pow() (0) | 2025.02.16 |
[JS] 코딩테스트 018 - 반올림, 올림, 버림 / parseInt (0) | 2025.02.16 |
[JS] 코딩테스트 014~017 - 자바스크립트 연산자 정리, NOT 연산자 (0) | 2025.02.16 |