export const getAgeString = (age: number): string => {
if (age < 0) return "Возраст не может быть отрицательным";
const lastDigit = age % 10;
const isTeen = Math.floor(age / 10) % 10 === 1;
if (isTeen) {
return `${age} лет`;
}
switch (lastDigit) {
case 1:
return `${age} год`;
case 2:
case 3:
case 4:
return `${age} года`;
default:
return `${age} лет`;
}
};
Функция getAgeString
принимает возраст в виде числа и возвращает строку с корректным грамматическим оформлением возраста на русском языке.
Как она работает?
- Проверка отрицательного возраста: Если передан отрицательный возраст, функция возвращает сообщение “Возраст не может быть отрицательным”.
- Определение последней цифры: Вычисляется последняя цифра возраста с помощью операции остатка от деления на 10.
- Проверка на подростковый возраст: Если десяток возраста равен 1 (например, 11, 12, 13), считается, что это подростковый возраст, и возвращается строка с окончанием “лет”.
- Выбор правильного окончания:
- Если последняя цифра 1 (но не 11), возвращается строка с окончанием “год”.
- Если последняя цифра 2, 3 или 4 (но не 12, 13, 14), возвращается строка с окончанием “года”.
- Во всех остальных случаях возвращается строка с окончанием “лет”.
Пример использования
console.log(getAgeString(21)); // "21 год"
console.log(getAgeString(22)); // "22 года"
console.log(getAgeString(25)); // "25 лет"
console.log(getAgeString(11)); // "11 лет"
Эта функция удобна для отображения возраста в пользовательских интерфейсах приложений на React Native, обеспечивая корректное склонение.