JavaScript에서 두 개의 문자열 str1과 str2를 인수로 받아, str1이 str2로 끝나는지 여부를 판별하는 함수를 작성해야 합니다. 이 함수는 판별 결과에 따라 불리언(boolean) 값을 반환해야 합니다.
먼저 첫 번째 문자열을 살펴보겠습니다.
const str1 = 'this is just an example';
다음은 두 번째 문자열입니다.
const str2 = 'ample';
구현 아이디어
핵심 로직은 간단합니다. str1의 길이에서 str2의 길이만큼 뒤에서부터 잘라낸 부분 문자열(substring)을 추출한 뒤, 이것이 str2와 정확히 일치하는지 비교하면 됩니다. 일치하면 true, 그렇지 않으면 false를 반환합니다.
예제 코드
다음은 위 로직을 구현한 전체 코드입니다.
const str1 = 'this is just an example';
const str2 = 'ample';
const endsWith = (str1, str2) => {
const { length } = str2;
const { length: l } = str1;
const sub = str1.substr(l - length, length);
return sub === str2;
};
console.log(endsWith(str1, 'temple'));
console.log(endsWith(str1, str2));실행 결과
위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.
false true
추가 설명
'example'이라는 문자열은 'temple'로 끝나지 않으므로 첫 번째 호출은 false를 반환하고, 'ample'로는 정확히 끝나므로 두 번째 호출은 true를 반환합니다.
참고로, 최신 JavaScript에서는 substr() 대신 권장되는 slice() 메서드나 ES6에서 표준으로 추가된 내장 메서드 String.prototype.endsWith()를 사용할 수도 있습니다. 예를 들어 str1.endsWith(str2) 한 줄로 동일한 결과를 얻을 수 있으며, 직접 구현한 함수는 이러한 내장 메서드가 없는 환경이나 학습 목적으로 유용합니다.