@lil_web

Как в JS склонять при числах окончание в словах на -ние в родительном падеже?

На сайте составляют программу тренировки. Нужно грамотно писать текст на кнопке: «Составить тренировку из 13 упражнений».

Я изучил. Если число упражнений заканчивается на 1 — окончание «я», в других случаях — «й». Но есть исключение: если число заканчивается на 11, окончание не «я», а «й».

Я написал алгоритм, но мне кажется, можно более лаконично и оптимизировано. Отрефакторьте, пожалуйста.

const total = 10;
const totalWord = 'упражнени';

const newTotalWord =
	totalWord +
	(total.toString().slice(-1) === '1' && total.toString().slice(-2) !== '11'
		? 'я'
		: 'й');

const newTotal = 'из ' + total + ' ' + newTotalWord;

Песочница
  • Вопрос задан
  • 762 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
function declOfNum(number, titles) {  
    cases = [2, 0, 1, 1, 1, 2];  
    return titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];  
}

// использование: в массиве передавать формы для 1, 4 и 5 «штук»
declOfNum(count, ['найдена', 'найдено', 'найдены']);
src

spoiler
const total = 10;
const totalWords = ['упражнения', 'упражнений', 'упражнений'];
const newTotal = 'Составить тренировку из ' + total + ' ' + declOfNum(total, totalWords);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы