Склонение числительных в 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
Предыдущая запись Select с ссылками
Следующая запись Input type number

Комментарии

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

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

С помощью расширения dompdf можно легко сформировать PDF файл. По сути, dompdf - это конвертер HTML в PDF который...
23283
+14
Сборник jQuery приемов с textarea - получить содержимое, вставить значение, подсчет количества символов и строк и т.д.
21641
+3
Две PHP функции для конвертирования секунд в дни, часы, минуты.
3231
+3
Основные примеры работы с массивами PHP. Создание, наполнение, извлечение удаление значений.
17630
+3
Обойти ячейки таблицы можно с помощью jQuery метода each, например следующий код выводит текст из всех ячеек в консоль.
8450
0
В продолжении темы работы с массивами поговорим о типичной задаче – их сортировке. Для ее выполнения в PHP существует множество функций, их подробное описание можно посмотреть на php.net, рассмотрим...
21928
+3