이번 글에서는 숫자를 입력받아 해당 숫자에 대응하는 영어 서수(ordinal number)를 문자열로 반환하는 JavaScript 함수를 작성해 보겠습니다.
예시
3 → 3rd
영어 서수 접미사 규칙
영어 서수는 다음과 같은 규칙에 따라 접미사가 결정됩니다.
- 일의 자리가 1이고, 마지막 두 자리가 11이 아닌 경우 → "st" (예: 1st, 21st)
- 일의 자리가 2이고, 마지막 두 자리가 12가 아닌 경우 → "nd" (예: 2nd, 22nd)
- 일의 자리가 3이고, 마지막 두 자리가 13이 아닌 경우 → "rd" (예: 3rd, 23rd)
- 그 외의 모든 숫자 → "th" (예: 4th, 11th, 111th)
구현 코드
위 규칙을 구현한 코드는 다음과 같습니다.
const num = 3;
const englishCount = num => {
if (num % 10 === 1 && num % 100 !== 11){
return num + "st";
};
if (num % 10 === 2 && num % 100 !== 12) {
return num + "nd";
};
if (num % 10 === 3 && num % 100 !== 13) {
return num + "rd";
};
return num + "th";
};
console.log(englishCount(num));
console.log(englishCount(111));
console.log(englishCount(65));
console.log(englishCount(767));실행 결과
콘솔 출력 결과는 다음과 같습니다.
3rd 111th 65th 767th
핵심은 %(나머지) 연산자입니다. num % 10으로 일의 자리를, num % 100으로 마지막 두 자리를 확인하여 11, 12, 13처럼 예외적으로 "th"를 붙여야 하는 숫자까지 정확하게 처리할 수 있습니다.