Как изменить код, чтобы работали склонения? vue js

Есть vue код:

getTitle(number) {
 return `${number} Деталь${number > 1 ? 'Деталей' : ''}`;
}

Вызывается в шаблоне: {{ getTitle(2) }}

Как нужно передавать, если число деталей получается через api, в шаблоне выводится {{ item.in_stock }}

Скрипт срабатывает, но только на число 1. (если, скажем, число 251 - то пишет деталей) Хотел сделать через includes, но не удалось.

Вопрос заключается: Как правильно передавать из шаблона {{ item.in_stock }}и как улучшить код, чтобы при 251 выводилось слово "деталь"?


Ответы (1 шт):

Автор решения: Leonid

Если очень хочется через тернарный оператор, то можно:

n%100<11||n%100>19?n%10!=1?n%10>1&&n%10<5?'и':'ей':'ь':'ей'

В коде добавил скобки для большей читаемости.

function getTitle(n) {
return `${n} детал${(n%100<11 || n%100>19)?((n%10!=1)?((n%10>1 && n%10<5)?'и':'ей'):'ь'):'ей'}`;
}

document.querySelector('input').addEventListener('input',changeTitle);

function changeTitle(e){
    document.querySelector('h1').textContent = getTitle(+e.target.value);
}
<input type="number" min="0">
<h1></h1>

→ Ссылка