Компоненты
Склонение слов
В объекте wordEndings по ключам лежат склонения слов в зависимости от числа с которым используется данное слово. В объекте приведены два примера, вы можете расширять его в зависимости от нужд проекта
const wordEndings = {
'yearsEndings': {
firstState: 'лет',
secondState: 'год',
thirdState: 'года',
fourthState: 'лет',
},
'monthEndings': {
firstState: 'месяцев',
secondState: 'месяц',
thirdState: 'месяца',
fourthState: 'месяцев',
},
};
export const inclineWord = (num, type) => {
let n = num ? num.toString() : '1';
let last = n.slice(-1);
let twoLast = n.slice(-2);
if (twoLast === '11' || twoLast === '12' || twoLast === '13' || twoLast === '14') {
return `${n} ${wordEndings[type].firstState}`;
}
if (last === '1') {
return `${n} ${wordEndings[type].secondState}`;
}
if (last === '2' || last === '3' || last === '4') {
return `${n} ${wordEndings[type].thirdState}`;
}
return `${n} ${wordEndings[type].fourthState}`;
};
Примеры вызова и получаемы результаты:
inclineWord(1, 'yearsEndings') // 1 год
inclineWord(2, 'yearsEndings') // 2 года
inclineWord(11, 'yearsEndings') // 11 лет
inclineWord(21, 'yearsEndings') // 21 год
inclineWord(1, 'monthEndings') // 1 месяц
inclineWord(2, 'monthEndings') // 2 месяца
inclineWord(11, 'monthEndings') // 11 месяцев
inclineWord(21, 'monthEndings') // 21 месяц