function wordend(num, words){
return words[ ((num=Math.abs(num%100)) > 10 && num < 15 || (num%=10) > 4 || num === 0) + (num !== 1) ];
}
alert(11+' '+wordend(11, ['стул','стула','стульев']));
Ещё чуток сократил, хотя это, конечно, просто баловство.) |
|
qwerty-клавиатура, да, что-то в этом есть:
function wordend(num, words){
if((num=Math.abs(num%100)) > 20) num%=10;
return words[ (num > 4 || num === 0) + (num !== 1) ];
}
можно дальше развлекаться)) |
зачем abs? хотя -1 градус, -2 градусов. Не все таки оно не нужно
|
это плохая функция во-первых у слов месть одинаковая основа, меняются только окончания, а во-вторых я тоже умею однострочники писать
function pluralize(count, base, singular, plural1, plural2) {
return count + ' ' + base + ( ( count = (count %= 100) > 20 ? count % 10 : count ) == 0 || count > 4 ? plural2 : count > 1 ? plural1 : singular );
}
|
for (var i = 0; i < 1000; ++i) console.log( pluralize(i, 'бутыл', 'ка', 'ки', 'ок') ) |
Если уж так хочется писать не целые слова, а куски, пожалуйсто:
num + 'бутыл' + wordend(num, ['ка', 'ки', 'ок']) При этом в отличие от того, что предлагаете, вы между цифрой и текстом может быть любой разделитель, а не только пробел. Но это мелочи, интересно другое: 1. Чем плохая? (по сути они одинаковы же) 2. Интерес не в длинном однострочнике, а в максимальном сокращении лишних телодвижений.) Цитата:
function wordend(num, words){
if((num=Math.abs(num%100)) > 20) num%=10;
return words[ (num > 4 || num === 0) + (num !== 1) ];
}
function pluralize(count, base, singular, plural1, plural2) {
base = count + ' ' + base;
count = (count %= 100) > 20 ? count % 10 : count;
return base + (count == 0 || count > 4 ? plural2 : count > 1 ? plural1 : singular);
}
alert([
'wordend: -2 градус' + wordend(-2, ['', 'a', 'ов']),
'\npluralize: ' + pluralize(-2, 'градус', '', 'а', 'ов')
]);
И почему же не нужно? Сейчас не нужно, а потом получив глюк отвлекаться от работы и вспоминать, что в функции нет проверки на знак? |
ну -1, -2, -3 это применимо только к температуре, всем понятна такая запись -2°C, количество не может быть отрицательным(труп либо есть, либо его нет). Пример таймера использовать http://x9a.ru/samples/timer.htm
|
| Часовой пояс GMT +3, время: 16:14. |