Компоненты

Склонение слов

Скачать компонент

В объекте 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 месяц