«M. Weather» – бесплатный бот-информер погоды «ВКонтакте»
377 просм
0 комм
Поделиться:

Делаем склонение числительных на JavaScript

Данная статья будет полезна многим, если применить ее для своих проектов. Речь в очередной раз пойдет об автоматическом склонении числительных.

Для чего нужен этот скрипт? С его помощью вы можете склонять слова в зависимости от чисел, которые сопутствуют этим словам. Например, 2 комментарий – такую картину я вижу часто на многих ресурсах. А с помощью предложенного скрипта вы сможете сделать правильное с точки зрения орфографии склонение, то есть в нашем случае – 2 комментария.

Для того чтобы сделать склонение, воспользуйтесь следующим скриптом:

function declination(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] ];  
}
title = declination(N, ['человек', 'человека', 'человек']);

Здесь нас интересует эта строчка:

title = declination(N, ['человек', 'человека', 'человек']);

Именно в ней нужно сделать необходимые настройки, когда как остальная часть у нас остается без изменения.

Здесь N – это наше число (можно указать вручную или заменить переменной), а ['человек', 'человека', 'человек'] – массив со склоняемыми словами.

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

Пример использования скрипта

Предположим, что у вас есть скрипт, который считает количество яблок в двух корзинках. В одной у нас 3 яблока, а в другой – 2:

var basket_1 = 3;
var basket_2 = 2;
var sum_apple = basket_1+basket_2;
alert(sum_apple);

Здесь sum_apple содержит в себе общее количество яблок. Теперь воспользуемся скриптом склонения и подставим в него переменную:

var basket_1 = 3;
var basket_2 = 2;
var sum_apple = basket_1+basket_2;
function declination(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] ];  
}
title = declination(sum_apple, [' яблоко', ' яблока', ' яблок']);
alert(sum_apple+title);

В этом случае на выходе мы получим сообщение – 5 яблок. Если вы измените количество яблок в первой корзине на 30, то в результате получите 32 яблока. Все, как всегда, просто. Удачи вам, и до новых интересных статей в нашем блоге!

0
комментарий
Оставить комментарий:
Нажимая кнопку «Отправить» вы даете согласие на обработку своих персональных данных.
Ваше Имя
Ваш E-mail
Текст комментария