문제 정의
첫 번째 인수로 문자열을, 두 번째 인수로 숫자(최대 길이)를 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 다음 세 가지 조건을 모두 충족해야 합니다.
- 문자열 자르기: 문자열의 길이가 지정된 최대 길이(두 번째 인수)보다 길면 문자열을 잘라내고, 잘라낸 문자열 끝에 "..."(말줄임표)를 붙여 반환합니다.
- 말줄임표도 길이에 포함: 끝에 추가되는 점 세 개(...) 역시 전체 문자열 길이에 포함되어야 합니다.
- 예외 처리: 다만 지정된 최대 길이가 3 이하인 경우에는, 점 세 개를 잘라낼 문자열의 길이를 계산할 때 포함하지 않습니다.
예제 코드
위 조건을 구현한 코드는 다음과 같습니다.
const str1 = 'This is an example string';
const str2 = 'abc';
const truncate = (str, len) => {
if (str.length > len) {
if (len <= 3) {
return str.slice(0, len - 3) + "...";
} else {
return str.slice(0, len) + "...";
}
} else {
return str;
}
};
console.log(truncate(str1, 5));
console.log(truncate(str2, 3));실행 결과
콘솔에 출력되는 결과는 다음과 같습니다.
This ...
abc
코드 동작 원리
함수의 흐름을 단계별로 살펴보면 다음과 같습니다.
- 먼저
str.length > len조건으로 문자열이 최대 길이를 초과하는지 확인합니다. 초과하지 않는다면 잘릴 필요가 없으므로 원본 문자열을 그대로 반환합니다. - 문자열을 잘라야 하는 경우에는
len값이 3 이하인지에 따라 처리 방식이 달라집니다. len이 3보다 크면slice(0, len)으로 앞부분을 추출한 뒤 "..."를 이어 붙입니다. 예를 들어truncate(str1, 5)는 앞 5글자인 "This" 뒤에 "..."를 붙여 "This ..."를 반환합니다.len이 3 이하이면slice(0, len - 3)을 사용해 잘라낸 문자열을 생성합니다.- 잘릴 필요가 없는 짧은 문자열(예: 길이 3짜리 "abc"에 최대 길이 3을 지정한 경우)은 수정 없이 그대로 반환됩니다.