В данном материале рассмотрим, как сделать склонение окончаний при помощи Javascript. Возьмите готовую функцию решающую задачу со склонениями и посмотрите варианты её применения.
Когда числовые значения выводятся программно, мы не можем предугадать склонение окончаний слов связанных с этими числами.
В качестве примера можно привести цену или курс рубля: 101 рубль, 252 рубля, 1000 рублей. Или ещё пример - пользователей онлайн или зарегистрировано на сайте: 21 пользователь, 43 пользователя, 30 пользователей.
Продемонстрировать работу js-функции определяющей правильное склонение, я могу в следующем примере. В поле ввода вводите любое число и для него будет определенено правильное окончание для связанного слова:
яблоко
штука
рубль
Функция выполняющая склонение в данном случае реализована на JavaScript и выглядит она так:
function sklonenie(number, txt) {
var cases = [2, 0, 1, 1, 1, 2];
return txt[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]];
}
Функция принимает два параметра:
Функция возвращает строку, которая является подходящим вариантом склонения (из массива txt) для переданного ей числа (параметр number).
1, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, 131, 141 и т.д.
2, 3, 4, 22, 23, 24, 32, 33, 34, 42, 43, 44 ... 102, 103, 104, 122, 123, 124, 132 и т.д.
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26, 27, 28, 29, 30, 35 и т.д.
Получится стрелочная функция в одну строку:
const sklonenie = (number, txt, cases = [2, 0, 1, 1, 1, 2]) => txt[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]];
Ниже примеры вызова в функции:
let apple = 1;
let pieces = 3;
let ruble = 10;
let a = sklonenie(apple, ['яблоко', 'яблока', 'яблок']); // яблоко
let b = 'Мне нужно ' + pieces + ' ' + sklonenie(pieces, ['штука', 'штуки', 'штук']); // Мне нужно 3 штуки
let c = `Мы потратили ${ruble} ${sklonenie(ruble, ['рубль', 'рубля', 'рублей'])}`; // Мы потратили 10 рублей
Конечно вместо вариантов слов можно в параметр txt передавать массив с вариантами окончаний. Давайте покажу такой пример с окончаниями для слова рубль, заодно будут ещё примеры с использованием данной функции:
let r = 'рубл';
let v = ['ь', 'я', 'ей'];
let n = 224;
let str1 = 'У меня 120 ' + r + sklonenie(120, v); // У меня 120 рублей
let str2 = 'Цена: ' + n + ' рубл' + sklonenie(n, ['ь', 'я', 'ей']); // Цена: 224 рубля
let str3 = `На счету ${n} рубл${sklonenie(n, v)}`; // На счету 224 рубля
Надеюсь Вам помогло данное решение и Вы теперь сможете реализовать задачу со склонением слов при числах.
Youtube несколько видео на странице. Как сделать остановку предыдущего видео, при запуске следующего? На сайте расположено на одной странице три видео. При включении нужно чтобы другое видео, если запущено , останавливалось. Как это реализовать?
Как избежать повторной загрузки контента Jquery + Ajax + JSON. Для работы Front - End'а доступны были по ТЗ только таковы инструменты Java Script, JQuery, Ajax, JSON и конечно же HTML + CSS.
Принципы, о которых пойдет речь, являются фундаментальными для этого языка и будут оставаться таковыми независимо от того, какой фреймворк вы используете. Более того, понимание этих концепций окажется бесценным бонусом, когда вы решите изучить или использовать какую-либо популярную библиотеку или фреймворк из арсенала JavaScript.