Как работает массив?

Для склонения числительных нашел вот такой популярный скрипт:

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]];
}


Скажите пожалуйста. По какому принципу выбран порядок чисел в массиве decCases?
  • Вопрос задан
  • 257 просмотров
Решения вопроса 1
vvovas
@vvovas
Попробуйте просклонять слово "час", вы увидите, что у вас всего 3 варианта: "час", "часа", "часов". Указание на то, какой вариант использовать, содержится в decCases.
Сопоставление варианта и числа описано в условии:
number % 100 > 4 && number % 100 < 20 - используется вариант с индексом "2"
в остальных случаях берется вариант с индексом Math.min(number % 10, 5)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы