Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 문자열에서 중복되지 않은 문자 제거하기

문제 개요

JavaScript 함수를 작성하여 문자열을 입력받고, 중복되지 않은 문자(한 번만 등장하는 문자)를 모두 제거한 새로운 문자열을 반환해야 합니다. 즉, 두 번 이상 등장하는 문자만 남기는 것이 핵심입니다.

예를 들어, 입력 문자열이 다음과 같다면 −

"teeth_foot"

출력 결과는 다음과 같아야 합니다.

"teetoot"

위 예제에서 'h', '_', 'f'는 각각 한 번만 등장하므로 제거되고, 't', 'e', 'o'처럼 여러 번 등장하는 문자만 남게 됩니다.

구현 방법

이 문제는 split()으로 문자열을 배열로 변환한 뒤, filter()indexOf(), lastIndexOf()를 활용해 해결할 수 있습니다. 어떤 문자의 첫 번째 인덱스와 마지막 인덱스가 서로 다르다면, 그 문자는 두 번 이상 등장한 것입니다.

예제 코드

const str = 'teeth_foot';
const removeNonDuplicate = str => {
    const strArray = str.split("");
    const duplicateArray = strArray.filter(el => {
        return strArray.indexOf(el) !== strArray.lastIndexOf(el);
    });
    return duplicateArray.join("");
};
console.log(removeNonDuplicate(str));

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

teetoot

코드 설명

  • str.split(""): 문자열을 한 글자씩 분리하여 배열로 만듭니다.
  • filter(): 각 문자에 대해 조건을 검사하여 중복된 문자만 남깁니다.
  • indexOf(el) !== lastIndexOf(el): 첫 등장 위치와 마지막 등장 위치가 다르면 해당 문자는 최소 두 번 등장한 것입니다.
  • join(""): 필터링된 문자 배열을 다시 하나의 문자열로 합칩니다.