20101009

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

/**
 * Возвращает единицу измерения с правильным окончанием
 * 
 * @param {Number} num      Число
 * @param {Object} cases    Варианты слова {nom: 'час', gen: 'часа', plu: 'часов'}
 * @return {String}            
 * nom — Nominativ, именительный падеж;
 * gen — Genetiv, родительный падеж;
 * plu — Plural, множественное число.
 */
function units(num, cases) {
    num = Math.abs(num);
    
    var word = '';
    
    if (num.toString().indexOf('.') > -1) {
        word = cases.gen;
    } else { 
        word = (
            num % 10 == 1 && num % 100 != 11 
                ? cases.nom
                : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) 
                    ? cases.gen
                    : cases.plu
        );
    }
    
    return word;
}

Комментариев нет: