Задача: сделать так, чтобы цифры и числительные к ним выводились корректно при пересчете значения на Javascript, то есть сделать склонение числительных на javascript.

Склонение числительных на javascript

Без склонения числительных пользователь может увидеть «8 мортышка(ек)» или «4 трамваев» и т.д. Это не красиво и усложняет процесс восприятия интерфейса.

Поэтому для многих стало нормой делать системы, которые бы склоняли числительные, так, чтобы пользователю было удобно читать интерфейс, так, как будто интерфейс – живое существо.

Как сделать склонение числительных на javascript

Подход очень простой. В русском языке есть несколько падежей, в которых числительное может выступать в зависимости от числа, с которым они используются.

Ниже приведена функция, которая выполняет склонение числительных на javascript:

function declOfNum(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] ];  
}

В эту функцию передается число (параметр number), и массив заголовков (параметр titles), среди которых будет выбрана правильная форма, подходящая к числу.

Первый элемент title — для единиц, второй — для пар, третия — для других чисел.

Например:

Нужно вывести фразу N арбузов, вызовем функцию:

title=declOfNum(N,['арбуз','арбуза','арбузов']);

В результате склонение числительных на javascript сработает, и мы получим (в зависимости от N):
1 арбуз
2 арбуза
12 арбузов

Всё просто, и удобно.

Кстати, есть подобная функция, для того, чтобы сделать склонение числительных на php