Хочу поделиться с вами полезной функцией, которая позволяет склонять года и месяца, в зависимости от их количества.
Например, у вас есть справочник гарантийных сроков, при создании нового элемента приложения можно указать кол-во месяцев и лет, хочется чтобы названия элементов приложений склонялись корректно и не было что-то типа "1 лет 3 месяцев"
Функция ниже на вход принимает число (кол-во месяцев/лет) и тип(месяцы/года), результатом функции будет строка с количеством и правильным склонением типа
Код:
function genereationName(amount: number, period_type: "year" | "month") {
// Вспомогательная функция для склонения года
function year(n: number) {
n = Math.abs(n) % 100;
let n1 = n % 10;
if (n > 10 && n < 20) return 'лет';
if (n1 === 1) return 'год';
if (n1 >= 2 && n1 <= 4) return 'года';
return 'лет';
}
// Вспомогательная функция для склонения месяца
function month(n: number) {
n = Math.abs(n) % 100;
let n1 = n % 10;
if (n > 10 && n < 20) return 'месяцев';
if (n1 === 1) return 'месяц';
if (n1 >= 2 && n1 <= 4) return 'месяца';
return 'месяцев';
}
return `${amount} ${period_type == "month" ? month(amount) : year(amount)}`
}
Еще больше полезной информации в ТГ канале WhatDaELMA365