Склонение числительных в JS

Склонение числительных в JS

Небольшая javascript функция для склонения числительных, в которой первый аргумент число, второй – массив с тремя элементам.

function num_word(value, words){  
	value = Math.abs(value) % 100; 
	var num = value % 10;
	if(value > 10 && value < 20) return words[2]; 
	if(num > 1 && num < 5) return words[1];
	if(num == 1) return words[0]; 
	return words[2];
}
JS

Использование функции

Чтобы заполнить массив с формами склонений, нужно ответить на три вопроса:

  1. Каким будет слово для одной единицы?
  2. Каким будет слово для двух единиц?
  3. Каким будет слово для пяти единиц?

Примеры заполненных массивов:

num_word(value, ['товар', 'товара', 'товаров']);
num_word(value, ['штука', 'штуки', 'штук']);
num_word(value, ['пара', 'пары', 'пар']);
num_word(value, ['рубль', 'рубля', 'рублей']);
JS

Пример

<form>
	<label>Выберите количество товаров:</label>
	<p><input type="number" min="0" name="count_1"></p>
	<p><input type="number" min="0" name="count_2"></p>
	<p><input type="number" min="0" name="count_3"></p>
	<p><strong>Итого: <span id="js_result">0</span></strong></p>
</form>

<script src="/jquery/2.1.1/jquery.min.js"></script>
<script>
function num_word(value, words){  
	value = Math.abs(value) % 100; 
	var num = value % 10;
	if(value > 10 && value < 20) return words[2]; 
	if(num > 1 && num < 5) return words[1];
	if(num == 1) return words[0]; 
	return words[2];
}

$('form input[type="number"]').change(function(){
	var count = 0;
	$('form input[type="number"]').each(function(){
		val = parseInt($(this).val());
		if (!isNaN(val)){
			count = count + val;
		}
	});
   
	$('#js_result').html(count + ' ' + num_word(count, ['товар', 'товара', 'товаров']));
});
</script>
HTML
17.09.2020, обновлено 20.04.2022
13638
Предыдущая запись Треугольники на CSS

Комментарии 2

Олег О Олег О
11 апреля 2022 в 19:57
+1
Круто, очень удобно. Спасибо!
Олег О Олег О
11 апреля 2022 в 19:58
+1
Только в примерах массивов лишняя скобка в конце: num_word(value, ['товар', 'товара', 'товаров']));

, чтобы добавить комментарий.

Другие публикации

Генерация счета на оплату PDF PHP
С помощью расширения dompdf можно легко сформировать PDF файл. По сути, dompdf - это конвертер HTML в PDF который...
48033
+29
Работа с cookie в JavaScript
Сookies или куки – это данные в виде пар ключ=значение, которые хранятся в файлах на компьютере пользователя. Для хранимых данных существуют несколько ограничений...
29360
+7
Работа с массивами PHP – создание, наполнение, удаление
Основные примеры работы с массивами PHP. Создание, наполнение, извлечение удаление значений.
65179
+10
Как изменить Favicon сайта из JavaScript
Для замены Favicon во вкладке браузера достаточно у элемента link rel="icon" в атрибуте href указать путь до нового...
7255
+4
Работа с Textarea jQuery
Сборник jQuery приемов с textarea - получить содержимое, вставить значение, подсчет количества символов и строк и т.д.
44549
+4
Работа с checkbox в JQuery
Сборник приемов JQuery для работы с чекбоксом.
204922
+13