Проблема с склонениями
Не могу разобраться, в чем причина. Имеется код:
var count = document.getElementById('count').innerHTML;
console.log('my count', count);
function declination(number, titles) {
cases = [2, 0, 1, 1, 1, 2];
return titles[ (number%100>4 && number%100<20)? 2:cases[(number%10<5)?number%10:5] ];
}
title = declination(count, [' штук', ' штуки']);
var summ = count + title;
document.getElementById('count').innerHTML = summ;
В count получаю число (допустим, сейчас 13). Выводит 13 и undefined, где ошибка?
Ответы (1 шт):
Автор решения: Tiarait
→ Ссылка
Сам массив cases = [2, 0, 1, 1, 1, 2], в нем присутствует 2, но в массиве titles всего 2 элемента (индексы 0 и 1). Так же и с условием (number%100>4 && number%100<20)? 2
Вам нужно добавить еще 1 элемент вот так declination(count, [' штукa', ' штуки', ' штук'])
Вот рабочий код взят отсюда
var count = 13;
console.log('my count', count);
function declination(arg, titles) {
let cases = [2, 0, 1, 1, 1, 2];
return titles[(arg % 100 > 4 && arg % 100 < 20) ? 2 : cases[Math.min(arg % 10, 5)]];
}
title = declination(count, [' штукa', ' штуки', ' штук']);
var summ = count + title;
console.log('summ', summ);