На главную
Текст
Согласование числительных
«1 файл, 2 файла, 5 файлов» — подберите три формы, проверьте их на числах и заберите готовый хелпер в проект.
Три формы слова
1, 21, 101
2–4, 22–24, 1,5
5–20, 0, 11–14
Как это выглядит на числах
0 файлов
1 файл
2 файла
5 файлов
11 файлов
12 файлов
21 файл
22 файла
25 файлов
100 файлов
101 файл
111 файлов
7 файлов
Готовый хелпер
export function plural(n, forms) {
const abs = Math.abs(n);
if (!Number.isInteger(abs)) return forms[1];
const mod10 = abs % 10;
const mod100 = abs % 100;
if (mod10 === 1 && mod100 !== 11) return forms[0];
if (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) return forms[1];
return forms[2];
}
plural(5, ['файл', 'файла', 'файлов']); // файловКак работает правило
- Форма 1 — когда число оканчивается на 1, кроме 11: «21 файл», но «11 файлов».
- Форма 2 — на 2, 3, 4, кроме 12–14: «23 файла», но «13 файлов».
- Форма 3 — всё остальное, включая 0 и 5–20.
- Дробное число всегда берёт вторую форму: «1,5 файла», а не «1,5 файл».