Функция склонения числительных для русского языка? Всем доброго дня. Суть вопроса такова: надо написать функцию склонения числительных, на вход принимает: число и 3 слова, а возвращает слово! Например -> А, гость, гостя, гостей — где А, целое число. Я написал ее но, только до цифры 5, как "допилить" правильность вывода слова, для любого числа которое вводится? (Я так понимаю надо Math.abs() - использовать?) ` var getRightName = function (roomsCount) { var roomsText = roomsCount + ' комнат'; if (roomsCount === 1) { roomsText += 'a'; } else if ([2, 3, 4].includes(roomsCount)) { roomsText += 'ы'; } else if (roomsCount === 5) { roomsText = roomsText; } return roomsText; };`
Да, вы правы. Для того чтобы корректно склонять числительные для любого числа, необходимо использовать функцию Math.abs() для получения положительного значения числа, а затем выполнить проверку на последнюю цифру числа.
Да, вы правы. Для того чтобы корректно склонять числительные для любого числа, необходимо использовать функцию Math.abs() для получения положительного значения числа, а затем выполнить проверку на последнюю цифру числа.
Вот исправленный вариант функции:
var getRightName = function (roomsCount) {var roomsText = roomsCount + ' комнат';
roomsCount = Math.abs(roomsCount);
var lastDigit = roomsCount % 10;
var lastTwoDigits = roomsCount % 100;
if (lastTwoDigits >= 11 && lastTwoDigits <= 14) {
roomsText += 'ов';
} else if (lastDigit === 1) {
roomsText += 'a';
} else if (lastDigit >= 2 && lastDigit <= 4) {
roomsText += 'ы';
} else {
roomsText += '';
}
return roomsText;
};
console.log(getRightName(-1)); // 1 комната
console.log(getRightName(2)); // 2 комнаты
console.log(getRightName(5)); // 5 комнат
console.log(getRightName(11)); // 11 комнат
console.log(getRightName(21)); // 21 комната
Этот код будет корректно склонять числительные для любого числа, включая отрицательные числа.