120888. 중복된 문자 제거 - Set

서진·2023년 5월 3일

programmers

목록 보기
11/33

🔻 중복된 문자 제거

문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.

입출력 예

my_stringresult
"people" "peol"
"We are the world""We arthwold"

[👩🏻‍💻내 코드]

function solution(my_string) {
    let mySet = new Set(my_string);
    return [...mySet].join('');
}

✅ set 객체

set 객체는 중복되지 않은 유일한 값들의 집합이다. 집합이기 때문에 요소들이 순서를 갖지 않는다.

📍 set 생성

set 생성자 함수는 이터러블 값을 인자로 받아서 set을 생성한다. 배열, 문자열, spread문법이 들어갈 수 있다. 인수를 전달하지 않으면 빈 set 객체가 생성된다.

let set = new Set();
let set1 = new Set([1,2,3,3]);
let set2 = new Set("hello");
  
console.log(set); // Set(0) {}
console.log(set1); // Set(3) {1,2,3}
console.log(set2); // Set(4) {"h", "e", "l", "o"}

📍 set 메소드

const set = new Set();
 
// 값 추가하기 - add
set.add(1);
set.add(1);
set.add(2);
// Set(2) {1, 2}
  
// 값 있는지 확인하기 - has
const set1 = new Set([1,2,3,4]);

console.log(set1.has(2)); // true
console.log(set1.has(5)); // false
  
// 요소 삭제하기 - delete
// 삭제 성공 여부의 불리언 값 return
// set은 인덱스를 갖지 않기 때문에 값으로 접근해야 함
const set2 = new Set([1,2,3]);

console.log(set.delete(2)); // true
console.log(set); // Set(2) {1, 3}
  
// 요소 일괄 삭제 - clear
// undefined를 return
const set3 = new Set([1,2,3]);

set.clear();
console.log(set); // Set(0) {}  

📍 set 요소 순회하기

// Set.prototype.forEach
// forEach() 안의 콜백 함수는 3가지의 인수를 전달 받음
// 현재 순회중인 요소값, 현재 순회중인 요소값, 현재 순회중인 set 객체 자체
/* 
두 번째 인수에 인덱스가 들어가는 Array.prototype.forEach 와 다름
set 객체는 인덱스가 없기 때문에 현재 순회중인 요소값을 한 번 더 넣음
*/

const set = new Set([1,2,3]);
set.forEach((v,v2,set) => console.log(v, v2, set));
/*
1 1 Set(3) {1,2,3}
2 2 Set(3) {1,2,3}
3 3 Set(3) {1,2,3}
*/

📍 set 구조 분해 할당

set은 이터러블 객체여서 배열 구조분해할당 가능

const set = new Set([1,2,3]);
const [a, ...rest] = [...set];
  
console.log(a,rest); // 1, [2,3]
profile
🫧 ☁️ 🌙 👩🏻•💻 🌿 🐱 🖱 🍟 🚀 ⭐️ 🧸 🍀 💗

0개의 댓글