Skip to content

Instantly share code, notes, and snippets.

@A
Last active December 17, 2015 14:39
Show Gist options
  • Save A/5626045 to your computer and use it in GitHub Desktop.
Save A/5626045 to your computer and use it in GitHub Desktop.
Написал JavaScript функцию, которая правильно склоняет единицы измерения числительных, например «1 час», «11 минут», «21 грамм», «5 толстых шлюх».
/**
* Функция возвращает строку с числом и названием единиц измерения (например '1 час', '11 минут', '21 грамм', '5 толстых шлюх').
* @param {Number} number Число
* @param {String} nominative Название единиц измерения в иминительном падеже и ед.числе (час, минута)
* @param {String} genitive Название единиц измерения в родительном падеже и ед.числе (часа, минуты)
* @param {String} genitive_pl Название единиц измерения в родительном падеже и ед.числе (часов, минут)
* @param {Bool} showZero Показывать ли результат, если number = 0
* @return {String} '5 минут', '11 часов', '1 грамм'
*/
var getDeclinedNumeralStringForRussian = function (number, nominative, genitive, genitive_pl, showZero) {
if (!showZero && !number) { return ''; }
var cases = [nominative,genitive,genitive_pl];
if (number%100>4 && number%100<20) {
return number+' '+cases[2];
} else {
var refs = [2,0,1,1,1,2];
return number+' '+cases[refs[(number%10<5)?number%10:5]];
}
};
@A
Copy link
Author

A commented May 22, 2013

Да, у тебе здорово получилось, пожалуй на этом варианте и остановлюсь, спасибо!

Кстати, я последнее время вместо parseInt() пишу |0, очень удобно.
http://habrahabr.ru/post/172731/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment