ГлавнаяБлогСклонение существительного от числа [js]

Склонение существительного от числа [js]

Рамиль Юналиев
Рамиль Юналиев
E-Commerce Lead
12 ноября 2012 г.
1 мин чтения

Функция для правильного склонения существительных в зависимости от числового значения:

var declOfNum = function(number, titles)
{  
    var cases = [2, 0, 1, 1, 1, 2];  
    return titles[ 
            (number % 100 > 4 && number % 100 < 20) 
            ? 
            2 
            : 
            cases[(number % 10 < 5) ? number % 10 : 5] 
    ];  
}

Примеры использования для русского языка с временными единицами:

// дни
declOfNum(1, ['день', 'дня', 'дней'])   // → 'день'
declOfNum(2, ['день', 'дня', 'дней'])   // → 'дня'
declOfNum(11, ['день', 'дня', 'дней'])  // → 'дней'
 
// часы
declOfNum(1, ['час', 'часа', 'часов'])   // → 'час'
declOfNum(5, ['час', 'часа', 'часов'])   // → 'часов'
 
// минуты
declOfNum(1, ['минута', 'минуты', 'минут'])   // → 'минута'
declOfNum(21, ['минута', 'минуты', 'минут'])  // → 'минута'
 
// секунды
declOfNum(1, ['секунда', 'секунды', 'секунд'])   // → 'секунда'
declOfNum(11, ['секунда', 'секунды', 'секунд'])  // → 'секунд'