Проблема не в том что оно плохо читается(Читается то нормально). Проблема в том что это хардкод, с которым придется помучаться если продукт будет поддерживать более одного языка. В принципе в приложении не должно быть в голом виде, а лучше сразу сделать фундамент для будущего с локалями строк.
Так, по порядку 1) Спасибо за качественное видео 2) Спасибо за использование Intl 3) Функция могла бы быть несколько лучше, ибо массив в качестве второго аргумента - прохладная идея Разве не лучше использовать объект? Это в разы улучшает читаемость и поддержку
@@kakieToYroki будут страдания, если понадобится поддерживать второй язык, у которого другая система, и некоторые айтемы необязательные (английский, к примеру) А массив заставит писать что-то вроде [item, items, items...] Если захочется этого избежать, придется переставить некоторые элементы массива местами, чтобы они стали необязательными И вот тут начнется веселье, тк типизация такой перестановки не из приятных Ни к чему не призываю, просто подсветил
@@goldstein1 согласен, + я бы создал объект со всеми этими данными и передавал ключ вторым аргументом (конечно же, используя TS), ибо в реальном проекте каждый раз передавать такие данные будет не очень удобно, имхо
@@ДмитрийВяткин-и3р а зачем городить костыли и отлаживать их, когда есть удобный инструмент, сделанный умными разработчиками и который поддерживается во всех браузерах с 2014 года?
@@minaev_mm через сколько функций ещё переходит переменная? Плюс ради двух языков всю библиотеку скачивать не рационально, которая необходима для 1 языка, можно заменить одной строкой без всяких дополнений? Где выгода? 1 строка с 2 тернарными или библиотека для всех языков? Оптимизацию плохо видишь похоже
Какая то функция плохо читается, добавим ещё абстракции чтобы стало понятнее
Чтобы использовать это, нужно скачать библиотеку с 20-ю зависимостями😂
Соглашусь. Зачем для такой задачи использовать библиотеку...
Это нативный объект джаваскрипта
@@thislogindoesnotexists нет никаких зависимостей) надо учить апи браузера))
@@Ushjsuuhensb даже если так, я и другие могут этого не знать, потом лезь смотри как оно работает, лучше привести функцию как в начале )
Проблема не в том что оно плохо читается(Читается то нормально).
Проблема в том что это хардкод, с которым придется помучаться если продукт будет поддерживать более одного языка.
В принципе в приложении не должно быть в голом виде, а лучше сразу сделать фундамент для будущего с локалями строк.
Спасибо, стало еще непонятнее
(
😂
постирония наше все ))
Круто, не знал вообще про интел. Пойду почитаю че еще умеет
Если передаёшь русский язык, то почему оно возвращает инглиш?
потому что javascript пишется на английском языке, русский язык указывается в качестве языка для проверки
@@падласергейбестов для проверки чего?!
@@veryevilodmin типа числительного в русском языке
Потому что если посмотришь на результат функции, то можешь понять, что это форма, а не готовый ответ
А зачем нам её читать? Один раз создаем некий хелпер и используем. Мы что, читать сюда пришли?
Вау
Вместо создания функции мы ее импортируем
По факту нияего не поменялось
Чел не пиши код никогда, если ты не понимаешь зачем нужны абстракции и обёртки над библеотеками, тебе это не надо
@@FobosWorld а ты не пиши комментарии, это не твое)
@@timur2887 Та ты гуру аргументов
все что я услышал это музыка майнкрафта XD
Функция возвращает кучу стрингов но тем не менее мы будем писать else if и else...
Так, по порядку
1) Спасибо за качественное видео
2) Спасибо за использование Intl
3) Функция могла бы быть несколько лучше, ибо массив в качестве второго аргумента - прохладная идея
Разве не лучше использовать объект? Это в разы улучшает читаемость и поддержку
Ну, тут уже как захочется можно сделать. Я всегда через массив делаю, мне так удобней )
@@kakieToYroki будут страдания, если понадобится поддерживать второй язык, у которого другая система, и некоторые айтемы необязательные (английский, к примеру)
А массив заставит писать что-то вроде [item, items, items...]
Если захочется этого избежать, придется переставить некоторые элементы массива местами, чтобы они стали необязательными
И вот тут начнется веселье, тк типизация такой перестановки не из приятных
Ни к чему не призываю, просто подсветил
@goldstein1 да, хороший кейс
@@goldstein1 согласен, + я бы создал объект со всеми этими данными и передавал ключ вторым аргументом (конечно же, используя TS), ибо в реальном проекте каждый раз передавать такие данные будет не очень удобно, имхо
const getPurelValues = (count, rules) => {
const result = new Intl.PluralRules('ru-RU').select(count);
const values = {
one: `${count} ${rules[0]}`,
few: `${count} ${rules[1]}`,
};
// Return matching plural form or fallback to the "other" form
return values[result] || `${count} ${rules[2]}`;
};
console.log(getPurelValues(50, ['admin', 'admins', 'admino']));
Лайк за фоновую музыку
21 админов?
Эта библиотека привяжет еще 20 зависимостей и кучу циклов процессора вместо обычных операций сравнения.
Так привяжет, что нативно во всех браузерах уже есть…
Слово должно быть во множественном числе? Это как
Чтобы было 10 слов, вместо 10 слово
слова по отдельности понятны, а вот смысл в ролике отсутствует
Смысл упростить реализацию до максимально читаемой и избавиться от магических цифр
Красильщики кнопок все сталкиваются с проблемами?(
Да, крудописатели гадости пишут (((
@@kakieToYroki это ужасно
Действительно, в этом случае еще труднее усваивать что именно написано
Самый серьёзный айти блогер рунета 😎
Да можно ещё проще сделать через % и пару тернарных, и забыть про функцию вообще
А потом переделывать весь код, когда нужно будет добавить ещё один язык 🤔
@@minaev_mm зачем переделывать? Аналог сделать для нового языка и всё, это намного эффективней будет и оптимизированней для проекта
@@ДмитрийВяткин-и3р а зачем городить костыли и отлаживать их, когда есть удобный инструмент, сделанный умными разработчиками и который поддерживается во всех браузерах с 2014 года?
@@minaev_mm через сколько функций ещё переходит переменная? Плюс ради двух языков всю библиотеку скачивать не рационально, которая необходима для 1 языка, можно заменить одной строкой без всяких дополнений? Где выгода? 1 строка с 2 тернарными или библиотека для всех языков? Оптимизацию плохо видишь похоже
Что?
Решение в одну строчку:
function declOfNum(number, words) {
return words[(number % 100 > 4 && number % 100 < 20) ? 2 : [2, 0, 1, 1, 1, 2][(number % 10 < 5) ? Math.abs(number) % 10 : 5]];
}
Спасибо бро
Зачем? Что бы что?
@@minaev_mm просто. Но суть тут больше в отсутствии зависимостей
А какие зависимости присутствовали в видео?
Задача с codewars
Красава
Агонь :)
Руки бы отрывал за то что на отдельную строку переносят что-то типа 'ru-RU' 😡
Иначе нифига не видно будет. Вы же с телефона шортсы смотрите, а не с пк )
@@kakieToYroki я тот самый юзер, смотрящий их всегда с пк 😅
@nightdreamer3339 вас таких 18%. Ты не одинок )
ть что высрал опять