이번 글에서는 두 개의 문자열 string1과 string2를 인수로 받아, string1이 string2로 끝나는지 여부를 판별하는 JavaScript 함수를 작성해 보겠습니다.
예를 들어 다음과 같습니다.
"The game is on" 여기서 "on"을 검사하면 true를 반환해야 합니다.
반면에,
"the game is off" 위 문자열에서 "of"를 검사하면 false를 반환해야 합니다.
그럼 이 함수의 코드를 직접 작성해 보겠습니다.
예제 코드
const first = 'The game is on';
const second = ' on';
const endsWith = (first, second) => {
const { length } = second;
const { length: l } = first;
const sub = first.substr(l - length, length);
return sub === second;
};
console.log(endsWith(first, second));
console.log(endsWith(first, ' off'));실행 결과
콘솔에 출력되는 결과는 다음과 같습니다.
true false
코드 동작 원리
위 함수는 먼저 두 번째 문자열의 길이를 구한 뒤, 첫 번째 문자열에서 그 길이만큼 뒤쪽에 해당하는 부분 문자열을 substr() 메서드로 추출합니다. 이후 추출된 부분 문자열과 두 번째 문자열을 일치 연산자(===)로 비교하여 결과를 반환합니다. 두 값이 완전히 같으면 true, 그렇지 않으면 false가 출력됩니다.
참고: 내장 메서드 endsWith() 활용하기
ES6(ES2015)부터는 JavaScript에 String.prototype.endsWith() 메서드가 기본으로 제공됩니다. 따라서 실무에서는 위와 같은 로직을 직접 구현하지 않고도 아래처럼 한 줄로 간단하게 처리할 수 있습니다.
console.log('The game is on'.endsWith(' on')); // true
console.log('the game is off'.endsWith(' of')); // false다만 학습 목적이나 폴리필(polyfill) 구현 등 내장 메서드를 사용할 수 없는 환경에서는 앞서 소개한 커스텀 함수 방식이 유용하게 활용될 수 있습니다.