JavaScript에서 하나의 문자열에 포함된 특정 문자들을 다른 문자열에서 제거하고 싶은 경우가 있습니다. 예를 들어, 다음과 같은 두 개의 문자열이 있다고 가정해 보겠습니다.
var originalName = "JOHNDOE"; var removalName = "JOHN"
여기서 우리가 해야 할 작업은 첫 번째 문자열(JOHNDOE)에서 두 번째 문자열(JOHN)에 해당하는 문자들을 제거하는 것입니다.
해결 방법: replace()와 reduce() 활용하기
이 문제는 replace() 메서드와 reduce() 메서드를 함께 사용하면 간단하게 해결할 수 있습니다. 먼저 제거할 문자열을 개별 문자로 분리한 뒤, reduce()를 통해 원본 문자열에서 각 문자를 순차적으로 제거하는 방식입니다.
예제 코드
const removeCharactersFromAString =
(removalName, originalName) => removalName.split('').reduce((obj, v) => obj.replace(v, ''), originalName);
var originalName = "JOHNDOE";
var removalName = "JOHN"
console.log(removeCharactersFromAString(removalName, originalName));코드 설명
split(''): 제거할 문자열을 한 글자씩 배열로 분리합니다.reduce(): 배열의 각 문자를 순회하면서 원본 문자열에서 해당 문자를 제거합니다.replace(v, ''): 일치하는 첫 번째 문자를 빈 문자열로 대체하여 삭제합니다.
프로그램 실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력합니다.
node fileName.js
여기서는 파일 이름이 demo93.js라고 가정하겠습니다.
실행 결과
프로그램을 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
PS C:\Users\Amit\JavaScript-code> node demo93.js DOE
출력 결과를 보면 원본 문자열 JOHNDOE에서 JOHN에 포함된 문자들이 모두 제거되고 DOE만 남은 것을 확인할 수 있습니다. 이처럼 replace()와 reduce()를 조합하면 복잡한 반복문 없이도 간결하게 문자열 조작 작업을 처리할 수 있습니다.