두 개의 문자열을 인자로 받아, 두 번째 문자열을 첫 번째 문자열 뒤에 이어 붙이는 JavaScript 함수를 작성해야 합니다.
단, 조건이 있습니다. 첫 번째 문자열의 마지막 문자와 두 번째 문자열의 첫 번째 문자가 서로 같다면, 중복된 문자 중 하나는 생략하고 연결해야 합니다.
예를 들어 다음과 같은 두 문자열이 있다고 가정해 보겠습니다.
const str1 = 'Food';
const str2 = 'dog';
'Food'의 마지막 문자인 'd'와 'dog'의 첫 번째 문자인 'd'가 동일합니다. 만약 단순히 두 문자열을 이어 붙이면 'Fooddog'처럼 'd'가 두 번 반복되어 어색한 결과가 나옵니다. 따라서 중복을 제거한 'Foodog'를 반환하도록 구현해야 합니다.
구현 코드
const str1 = 'Food';
const str2 = 'dog';
const concatenateStrings = (str1, str2) => {
const { length: l1 } = str1;
const { length: l2 } = str2;
if(str1[l1 - 1] !== str2[0]){
return str1 + str2;
};
const newStr = str2.substr(1, l2 - 1);
return str1 + newStr;
};
console.log(concatenateStrings(str1, str2));
코드 설명
함수 내부에서는 먼저 구조 분해 할당을 통해 각 문자열의 길이를 변수 l1, l2에 저장합니다. 이후 첫 번째 문자열의 마지막 문자(str1[l1 - 1])와 두 번째 문자열의 첫 문자(str2[0])를 비교합니다.
두 문자가 서로 다르면 중복이 없다는 뜻이므로, 두 문자열을 그대로 연결하여 반환합니다. 반대로 두 문자가 같다면 substr() 메서드를 사용해 두 번째 문자열의 첫 문자를 잘라낸 나머지 부분을 첫 번째 문자열 뒤에 붙여 반환합니다.
참고로 substr()은 현재 폐지(deprecated) 상태이므로, 최신 코드에서는 slice(1)를 사용하는 것이 좋습니다. 즉, const newStr = str2.slice(1);로 작성해도 동일한 결과를 얻습니다.
출력 결과
위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.
Foodog