Задать вопрос
  • Как рассчитать место в топе по объекту массива?

    const index = users.findIndex(item => item.id === <ID>);
    
    if (index === -1) { 
      // Не найден пользователь 
    } else { 
      console.log(index + 1); 
    }


    ...правда ощущение что я не понял вопроса, и вам надо просто отсортировать массив по "xp" и найти позиции в этом массиве.
    Ответ написан
  • Как осуществить автосмену дат с определенного времени?

    Это работа с часовыми поясами.
    Если в 17:30 это уже другой день, значит, насколько я понимаю, вы работаете с другим часовым поясом.

    Ищете временную зону, ставите moment.js + его плагин под временные зоны, затем создаете экземпляр, устанавливаете временную зону, и форматируете вывод (moment.js сам выведет всё правильно).

    Если нужны русские даты, для moment.js есть локализации.
    Ответ написан
    Комментировать
  • Как мне сделать вот такие рисунки?

    Если макет не тянется:
    1. Фоновым изображением (лучше SVG)
    2. Абсолютными элементами подогнанными под дизайн через CSS, но это жесть, так лучше не делать

    Если макет тянется:
    1. Разными элементами с фоновыми изображениями (лучше SVG) плюс правилами расположения элементов
    Ответ написан
    Комментировать
  • Как chrome рассчитывает margin:auto?

    Не понял до конца вопроса, но есть два момента:

    1. Не совмещайте top и bottom с margin (top & bottom) для абсолютных элементов, потому что это решение одной задачи разными способами, и, честно говоря, даже не знаю как себя поведет браузер

    2. margin: auto берет контейнер в котором размещается элемент, и "центрует" его путем добавления margin по разные стороны элемента в равной доле, поэтому для ваших 27% margin вышел больше, чем для большей высоты самого элемента. Но опять же, странное дело, потому что для абсолюта + top & bottom он должен был по идее растянуть его во весь экран, а не делать margin.

    Это мысли вслух, может быть чем-нибудь поможет.
    Ответ написан
    Комментировать
  • Как найти пересечения элементов в массиве?

    const a = [[8, 12], [17, 22]];
    const b = [[5, 11], [14, 18], [20, 23]];
    
    const result = a.reduce((acc, rangeA) => {
      
      return b.reduce((list, rangeB) => {
    
        if (rangeA[0] >= rangeB[1] || rangeA[1] <= rangeB[0]) {
          return list;
        }
    
        const from = Math.max(rangeA[0], rangeB[0]);
        const to = Math.min(rangeA[1], rangeB[1]);
    
        return [...list, [from, to]];
      }, acc);
    
    }, []);
    Ответ написан
    8 комментариев
  • Почему выдает ошибку при отправке запроса fetch?

    Анализируйте ответ сервера
    Скопируйте, загоните в JSON.parse, и увидите на какой позиции невалидный символ.
    Ответ написан
    Комментировать
  • Как сделать такой проект?

    Это изображение, его нельзя адаптировать без доп. решений, например:

    1. Растягивать / сжимать при изменении размера страницы, но это неудобно на небольших девайсах
    2. Работать с навигацией, т.е. сделать возможность навигации по изображению если оно не помещается на экране (наподобие карт)
    3. Изменить логику под небольшие размеры экранов, написать отдельное решение

    И в целом верно сказали, надо map, или svg.
    Ответ написан
    Комментировать
  • Обработка API запроса в цикле?

    Кода нет, но в целом, циклы синхронные, тогда как запросы нет, поэтому во время работы цикла без ожидания ответа от сервера никак не получить эти данные снаружи.

    Поэтому делаются цепочки вызовов, т.е. ожидаете ответ, вызываете другую функцию с этим ответом, и эта функция, в свою очередь, может вызвать другие функции, включая саму себя чтобы получить рекурсию (цикл).
    Ответ написан
    Комментировать
  • Как по другому разбить массив?

    Посмотрите chunk у lodash
    К слову, он так и работает, через slice: https://github.com/lodash/lodash/blob/4.17.15/loda...
    Ответ написан
    Комментировать
  • Нашел чтото странное, это шелл?

    Оно ставит странную строку в куки, причем, судя по всему, предварительно сгенерированную (как вариант, на этапе установки плагина). Запись в куки это нехорошо, потому что потом, вероятно, эта строка может улететь злоумышленнику, который зная секрет раскодирует данные.
    Ответ написан
    Комментировать
  • Почему не идет клик на изображение?

    Не понятно что значит не идет клик.
    У вас передается селектор, которого нет в разметке.
    Ответ написан
    Комментировать
  • Как ограничить возможные расширения для загрузки клиентом на JS?

    На клиенте мы не влазим в файл, поэтому только сервер реально может отфильтровать невалидные файлы.
    Поэтому на клиенте не даете загружать файлы по расширениям (фильтр), а на сервере делаете всю остальную валидацию.
    Ответ написан
    Комментировать
  • Как объединить input и select в одном поле?

    Это не нативный компонент, его нужно разработать или использовать готовое решение
    Ищите Predictive Search. Если нужно с дропдауном, не знаю как оно называется, но обычно в UI kit'ах они есть.
    Ответ написан
    Комментировать
  • JS последовательность изучения, что учить после основы в 2021 году?

    Сейчас почти весь фронт это React, минус часть работает с Ангуляром или Vue, и часть с динозаврами и другими менее популярными решениями.

    Минимально нужно:
    1. HTML
    2. CSS
    3. JavaScript
    4. Сборка (Webpack в 99% случаев)
    5. React (вся экосистема, включая Redux, Saga, Router, и прочее)
    6. Тестирование приложений на фронте (Jest, Karma, Selenium, Puppeteer, Cucumber, Gherkin минимум)


    Это самый минимум, но на самом деле надо намного больше:
    1. Знание архитектур ПО, видов, плюсов, минусов
    2. Знание принципов проектирования (шаблоны, SOLID, и другие слова)
    3. Изучение приемов кодирования
    4. Изучение работы сетевых протоколов (особенно HTTP/S)


    Дальше остается миллион и маленькая тележка того, что нужно знать ЕЩЕ, и здесь уже нереально всё перечислить, например:
    • Процессы отрисовки веб-страницы
    • Продвинутая работа с анимацией
    • Виды программирования, их плюсы и минусы, как они работают
    • Изучение инструментов
    • Изучение приемов балансировки нагрузки (в том числе на фронте)


    ...и потом еще Agile (чистый, потом Scrum, Kanban), а потом управление командами, принципы коммуницирования, принципы планирования работы, понимание процессов производства софта, и прочее и прочее..

    Поэтому рекомендую минимум по React выучить, и найти работу, и по возможности начать делать пет-проекты.

    Берете задачу посложнее, и делаете на нормальном стеке. В процессе соберете миллион грабель, научитесь тому минимуму, что необходимо, и так прокачаетесь.

    Пет-проекты нужно делать всегда, даже если есть работа, потому что работа это устоявшиеся принципы и инструменты, а пет-проекты дают возможность изучения и использования других инструментов, подходов, поэтому это отличный способ улучшить свои навыки.
    Ответ написан
    1 комментарий
  • Где можно посмотреть хорошие примеры верстки очень больших таблиц?

    Простые правила:

    • Текст должен быть обычного размера
    • Для экономии пространства не делаем огромных отступов (если нужно)
    • Скролл по горизонтали и вертикали
    • Sticky-заголовки или колонки для удобства
    • Если нужно вывести доп. данные, то можно сделать через подсказки при наведении, например


    Задача чтобы выводились все критические данные и было удобно читать, а всё остальное через интерактив.
    У нас есть таблицы с 10-20+ колонок, и тысячи строк, плюс фильтры, сортировки, но показать не могу, NDA.

    Если есть время, можно прикрутить управление колонками (скрытие/отображение, изменение размера, и прочее), это значительно упростит пользование таблицей.
    Ответ написан
    1 комментарий
  • Webpack: неужели после каждого изменения нужно пересобрать проект?

    Но, но не всё так плохо. Когда один раз соберете проект (запуск dev-сервера, например), дальнейшая сборка проекта на каждый "чих" занимает считанные секунды, поэтому особых сложностей не доставляет.

    По теме:

    1:

    Зависит от проекта, но в 99% случаев вебпаком собирают сложные веб-приложения, а там просто запустить файл и посмотреть результат не получится.

    Поэтому если это нужно, то можно спроектировать приложение таким образом, чтобы оно работало и БЕЗ сборки. Например, чистый JS (а не TypeScript), только относительные пути, подключение через System (например), полное отсутствие транспиляторов (только чистый JS/CSS). Правда, это будет мощный выстрел в ногу проекта, и соберете другие грабли, поэтому крайне не рекомендую это делать.

    2:

    Можно, но зависит от задач. Сборка проекта это просто команда, грубо, `webpack` в терминале. Запустить это можно на любом ПК, и так как это команда, то её можно запустить удаленно. Системы непрерывной интеграции работают именно таким образом, и сами собирают проект, тестируют, и так далее.

    Другой вопрос, что вы хотите npm от проекта, а одно без другого не живет (webpack это тоже модуль, без npm проект не собрать так как получится зависимости установить), т.е. нет, нельзя. В нормальном режиме.

    На самом деле, в теории, можно попробовать и даже это обойти, но я крайне не рекомендую это делать.
    Ответ написан
    Комментировать
  • Как сохранить созданный html элемент на странице?

    Чтобы создать заново, сначала нужно сохранить это.

    Вариантов несколько:
    • Сервер (строку передаем через интернет, сохраняем в базе, и при перезагрузке страницы скачиваем данные обратно и выводим на странице)
    • Локальное хранилище в браузере, смотрите Local Storage (в 99% случаев его достаточно)


    Дальше когда есть возможность сохранить данные и получить их обратно, просто выводим разметку на странице, вроде `el.innerHTML = <строка_с_разметкой_полученная_из_хранилища>`
    Ответ написан
    Комментировать
  • Каким образом можно реализовать такой переход по ссылке?

    Требуется динамическое изменение атрибута формы, либо редирект, т.е. в любом случае без программирования не обойтись. Используйте JavaScript – при отправке формы (речь про форму визуально, а не конкретно про тег form) формируйте URL и вызывайте location.href = URL
    Ответ написан
    Комментировать
  • Есть ли курс по анимации для начинающего?

    Анимация в JavaScript это набор техник по изменению CSS элементов, не более того. Основное это animation, transition, и transform.

    Поэтому не ищите гайды по анимации, а найдите документации по этим свойствам CSS, и когда вы изучите их, станет понятно как сделаю любую нужную вам анимацию.

    Это минимум.

    Дальше нужно понимать как работают анимации, для этого нужно понимать устройство браузера, т.е. как он отрисовывает страницу, что влияет на производительность, почему некоторые анимации это плохо, и как оптимизировать анимации.

    Для этого нужно разбираться со вкладкой Performance в Chrome DevTools. Профайлите свои анимации, причем, делайте их похардовее, чтобы браузер офигел и подвисал, и смотрите почему он лагает. Чтобы понять причины тормозов придется копать в дерево DOM, как рисуются элементы, как они аффектятся при изменении DOM, и прочее. Так и поймете как делаются анимации, что хорошо и что плохо для браузера.

    Всё описанное выше есть в документациях, можно найти при необходимости, например:

    https://developers.google.com/web/fundamentals/per... (читать весь раздел)
    https://developer.mozilla.org/en-US/docs/Web/CSS/a...

    Вообще информации нужно море, ссылок будет намного больше.

    Собственно по вопросу – я не искал, но не уверен что найдется нормальный курс по анимациям, разве что поверхностные. Если хотите реально научиться работать с анимациями, то практика, вероятно, лучший вариант.
    Ответ написан
    Комментировать
  • Как узнать ближайшее число в JS?

    Ищете разницу №1 через Math.abs(a - c)
    Ищете разницу №2 через Math.abs(b - c)

    Через сравнение разницы сможете понять к какому числу заданное число ближе.
    Получится всего одно сравнение больше/меньше вместо четырех.
    Ответ написан
    Комментировать