Склонение слов по русским падежам

205
10 июня 2022, 10:50

Подскажите, почему неверно склоняются слова.

let date = new Date();
let week = ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'];
let monthes = ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'];
let day = date.getDate(),
  month = monthes[date.getMonth()],
  year = date.getFullYear(),
  dayWeek = week[date.getDay()],
  hours = date.getHours(),
  minutes = date.getMinutes(),
  seconds = date.getSeconds();
function declOfNum(number, titles) {
  let cases = [2, 0, 1, 1, 1, 2];
  return titles[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]];
}
console.log('Сегодня ' + day + ' ' + month + ' ' + year + ' года, ' + dayWeek + ', ' + hours + ' ' + declOfNum(5, ['час', 'часа', 'часов']) + ' ' + minutes + ' ' + declOfNum(5, ['минута', 'минуты', 'минут']) + ' ' + seconds + ' ' + declOfNum(5, ['секунда', 'секунды', 'секунд']));

Answer 1
... + declOfNum(5, ['секунда', 'секунды', 'секунд']));
                ^

Почему именно пять?

READ ALSO
Как подключить SwiperJS по npm на NuxtJS?

Как подключить SwiperJS по npm на NuxtJS?

Как подключить SwiperJS по npm на NuxtJS?

239
Анимировать выделение шрифта на кривой SVG

Анимировать выделение шрифта на кривой SVG

У меня есть текст, который движется по кругу SVG, и который масштабируется в зависимости от размера окна - Я хочу анимировать текст так, чтобы...

186
Увеличение переменной с input кнопкой - кастомный вариант?

Увеличение переменной с input кнопкой - кастомный вариант?

Как реализовать нативным JavaScript, чтобы я брал переменную с input и ещё увеличивал по клику на единицу? Обычный input type="number" не подходит, потому...

185
Webpack. Module parse failed: Unexpected token (1:0)

Webpack. Module parse failed: Unexpected token (1:0)

Попытка сборки проекта на вебпаке 54

181