среда, 20 января 2010 г.

Склонение слов в зависимости от числительных в JavaScript

Зачастую хочется сделать красиво, например "2 секунды" или "23 человека". Чтобы правильно просклонять слово с учётом числа предлагаю следующую javascript-функцию:

var decCache = [],
    decCases = [2, 0, 1, 1, 1, 2];
function decOfNum(number, titles)
{
    if(!decCache[number]) decCache[number] = number % 100 > 4 && number % 100 < 20 ? 2 : decCases[Math.min(number % 10, 5)];
    return titles[decCache[number]];
}

Профиты:
  1. Всего пару строк
  2. Подходит для больших расчётов - результат кешируется в decCache
Первый аргумент число, второй - массив с тремя строками.
Массив легко создавать провяряя числа 1, 3 и 5.
Пример: decOfNum(5, ['секунда', 'секунды', 'секунд'])

1 комментарий:

Злой комментирует...
Этот комментарий был удален автором.