new Set()

조건호·2023년 7월 4일
0

코딩 테스트

목록 보기
3/9
post-thumbnail

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

이 문제 같은 경우는 set으로 풀수 있습니다.

set의 성질

  • Set 객체는 자료형에 관계 없이 원시 값과 객체 참조 모두 유일한 값을 저장할 수 있습니다.

  • 순서대로 순회합니다.

  • 한 번만 나타납니다. ( 값이 중복되어도 앞에 값 하나만 나온다는 뜻)

예시

let mySet = new Set();

mySet.add(1) // Set {1}
mySet.add(5) // Set {1,5}

위와 같이 add를 쓸 수 있는 것은 set에 내장되어있는 프로토타입때문입니다.

set을 보면 protoType이 있는데 set이 가지고 있는 인스턴스 메서드입니다.

문서를 읽을때마다 인스턴스, 프로토타입이 많이 나오는데 대략 무엇일것 같다라고 생각했기 때문에 다음에는 이에 대해서 공부하고 정리해보고자 합니다.

제가 생각했을 때 인스턴스는 객체와 비슷하지만 뭔가 확장된 느낌이고 프로토타입은 메서드들의 집합?같은 느낌입니당. 이 개념들을 정리해서 블로그를 써봐야겠습니당

문제 풀이

const solution = my_string => {
  return new Set(my_string).join('')
}

맨 처음에 위와 같이 풀었었는데 중괄호 안에 아무 값도 들어가지 않아서 전개연산자로 펼쳐주었더니 되었습니다.

const solution = my_string => {
  return [...new Set(my_string)].join('') 
  //문자들을 붙여줘야하기 때문에 join으로 마무리
}

왜 처음에는 빈 값이 나왔나 고민을 해봤을 때

  • set은 중복된 값을 제거하고 유일한 값들만을 가지는 컬렉션을 생성하는 것이지, 문자열을 반환하는 것이 아니기 때문
    ☞ new Set(my_string)을 사용하면 중복된 문자가 제거된 set 객체가 반횐됨.
    set객체 자체가 반환이됨.
  • set 객체를 다시 문자열로 변환하여 반환해줘야 함

마무리

set에 대해서 원래 알고 있었지만 완벽히 알려고 공부를 하다보니 알 것같으면서도 뭔가 확실하게 와닿는 느낌이 들지가 않아서 아직 공부가 더 부족하다는 것을 느끼고 좀 더 열심히 해야겠다는 생각이 들었습니다.

profile
주니어 프론트엔드 개발자입니다.

0개의 댓글