• Как отсортировать массив пар [ключ, значение]?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const sortedArr = arr
      .map(n => [ n, n[0].replace(/\D+/, '') ])
      .sort((a, b) => a[1].localeCompare(b[1]))
      .map(n => n[0]);
    Ответ написан
    Комментировать
  • Как реализовать пагинацию?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    вспомнилось описание одного api
    pgSize - 1...200 (default 20)
    start - 0...total
    example query https://example.com/api/users?pgSize=50&start=0
    example answer
    {
    "start": 0,
    "items": [],
    pgSize: 50
    }
    Ответ написан
    Комментировать
  • Как реализовать такую вероятность random?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Подход у вас верный, вроде бы.

    Если нужно случайно выбрать одно из N событий, у каждого своя вероятность – то сложить их в одну линию от 0 до N. Взять случайное от 0 до N и посмотреть на чей отрезок попадает.

    Например три события с вероятностями:
    А: 30%
    B: 65%
    С: 5%
    Отрезок получится: [0..30) [30..95) [95..100)
    Взять случайное от 0 до 100 и посмотреть, куда попало.
    Ответ написан
  • Как реализовать preloader?

    @iddqda
    network engineer, netdevops
    Возможно мой совет покажется глупым, так как по Реакту я пока даже еще учебник не дочитал
    но в своем поделии делаю как то так:

    class Main extends Component {
        state = {
            Data: [],
            isFetching: true,
        }
        openSpinner = () => {
            this.setState(() => ({ isFetching: true }));
        }
    
        hideSpinner = () => {
            this.setState(() => ({ isFetching: false }));
        }
    
        _loaddata = async (tab) => {
            this.openSpinner();
    
            const data = await fetchWrapper(URL);
            if (data)
                this.setState({ Data: data })
    
            this.hideSpinner();
        }
    
        async componentDidMount() {
            await this._loaddata();
        }
    
        render() {
            const { isFetching } = this.state;
            return (
                <>
                    <Content />
                    <Spiner show={isFetching} />
                </>
            )
        }  
    }
    Ответ написан
    Комментировать
  • Как скопировать логотип с сайта?

    sslion
    @sslion
    Это анимация lottie, соответственно нужен сам плеер lottie, svg, json файл, в котором описана анимация...
    В общем читай про анимации LOTTIE
    Ответ написан
    5 комментариев
  • Как скопировать логотип с сайта?

    Записать экран - далее использовать gif )))
    Ответ написан
    Комментировать
  • Как скопировать логотип с сайта?

    @ostup17
    Начинающий программист (flutter dev - frontend de)
    лого

    И там задействован js. Так что думаю вряд-ли получите ожидаемый результат. И еще посмотрите стили в панели разработчика (f12 > элемент выборара элементов > наводите на логотип > жмяк)
    Ответ написан
    Комментировать
  • Как хайпово писать медиа запросы в react?

    black1277
    @black1277
    Вольный стрелок
    Есть 3 способа подключить медиазапросы:
    1 Прямо в HTML-документе
    <link rel="stylesheet" media="(max-width: 700px)" href="example.css" />

    2 Использовать правило import в CSS-файле
    @import url(example.css) (max-width: 700px);

    3 Директиву media в CSS-файле
    @media (max-width: 700px) {
      /* Здесь прописывается CSS-правила */
    }

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

    Get-Web
    @Get-Web Куратор тега JavaScript
    Front-End Developer
    .canvas {
      display: block;
      position: absolute;
      pointer-events: none;
      left: 0;
      top: 0;
    }
    Ответ написан
    Комментировать
  • Как прокликать canvas, который находится поверх header?

    Vlad_IT
    @Vlad_IT Куратор тега CSS
    Front-end разработчик
    Если обрабатывать клики канвы никак не надо, то можно на нее повесить свойство pointer-events: none
    Ответ написан
    1 комментарий
  • Как найти произведения элементов массива и сумм столбцов матрицы?

    0xD34F
    @0xD34F Куратор тега JavaScript
    arr.map((n, i) => n * matrix.reduce((acc, row) => acc + row[i], 0))
    Ответ написан
    Комментировать
  • DOM Как взять атрибут стиля одного элемента и присвоить другому?

    Anopeng
    @Anopeng
    Веб-программист, учу фронт и бек
    window.getComputedStyle(e1) - получает все вычисленные CSS-свойства
    window.getComputedStyle(e1).color
    Ответ написан
    Комментировать
  • Оцените пожалуйста верстку?

    systemoops
    @systemoops
    Продуктовый маркетолог
    Я бы, конечно, посоветовал больше анализировать вёрстку реальных проектов. Потому что типичные ошибки перечислены. То есть, ошибки ошибками, но куда полезнее будет реальный опыт. Иначе так постоянно будет масса ошибок) Попробуйте взять какую-нибудь нишу сайтов, и изучить вёрстку каждого из них, лучше популярных.
    Даже вот теги h - вполне известная истина, как размещать.
    Ответ написан
    Комментировать
  • Как вывести изображение в html и узнать,правильно ли я создала папки?

    DevMan
    @DevMan
    открываете консоль браузера, и смотрите ошибки.
    вангую: ошибки в регистре названий файлов.
    Ответ написан
    Комментировать
  • Как отключить Tab на сайте?

    Anopeng
    @Anopeng
    Веб-программист, учу фронт и бек
    Не рекомендую так делать. Многим удобнее делать навигацию по сайту с помощью Tab, чем мышью. А ты просто ее отключишь

    window.onkeydown = evt => {
        if (evt.key == 'Tab') {
            evt.preventDefault();
        }
    }
    Ответ написан
    4 комментария
  • Какова суть генерации своих событий в JavaScript?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Попробую на пальцах объяснить.

    Событие – это конверт, на котором написано его название. Внутрь конверта можете вложить что-нибудь, а можете оставить конверт пустым.

    Элемент – это столик. Кто угодно может подойти и положить на столик свой конверт.

    Слушатель – это мужик, который топчется около столика и смотрит, нет ли чего с интересующим его названием. Может несколько человек поджидать конвертики с определённым названием – прочтут все, если только в конверте не написано «по прочтении съесть» – тогда кто-то съест и дальше не передаст.

    Как создать/отправить конверт. В любом месте кода создайте конверт и дайте ему название: var myEvent = new Event('teaTime'); Остается положить конверт на нужный столик:
    document.getElementById('stolik').dispatchEvent(myEvent);


    Чтобы в событие вложить какие-то данные, нужно использовать другой конструктор и передать нагрузку в поле detail:
    var event = new CustomEvent('saySomething', { detail: "Hello there!" });


    Для чего нужно создавать свои события? Чтобы развязать куски кода. Например, в разных местах документа можно нажать на кнопку повторяющегося виджета. Виджет создаст на document событие "widgetClicked". А ещё несколько одинаковых компонентов в странице, слушающих document на предмет события "widgetClicked", получат пинок и что-нибудь вытворят.
    Ответ написан
    2 комментария
  • Какой алгоритм подойдет для описания полета насекомого?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Можно сделать цепочку преследования: к случайной точке тянется одна, к ней другая, и т.д., а последняя – муха.

    Очередную точку ставить на плоскости случайно, в любом месте внутри допустимой области. Эта точка – цель, к которой стремится следующая, невидимая точка: каждый следующий кадр её координаты изменяются на k * векторИзТекущегоПоложения-в-Цель:
    x = x + k * (xTarget - x);
    y = y + k * (yTarget - y);

    Так «преследователь» замедляется, по мере приближения к цели, никогда её не достигая.

    Эта невидимая точка – не одна. К ней, как к цели, стремится следующая. К той ещё одна. Наконец, сама муха по этому закону стремится к хвосту этой цепи - очередной точке.

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

    Сделал рабочий пример.

    Можно поменять алгоритм и сделать, скажем, линейную скорость постоянной. Или случайно варьировать параметры k и D – от этого поменяется скорость и траектория от плавной ближе к ломаной.
    Ответ написан
    Комментировать
  • Как ускорить функцию подсчёта суммы от 0 до заданного числа js?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    const n3 = Math.floor(n / 3);
    const n5 = Math.floor(n / 5);
    const n15 = Math.floor(n / 15)
    const sum = (n3 * 3 * (n3 + 1)  + n5 * 5 * (n5 + 1) - n15 * 15 * (n15 + 1)) / 2;
    Ответ написан
  • Как передать результат работы функции в компонент?

    функция асинхронная, результат будет «не сразу». Возвращает Promise.

    в другом компоненте:
    getApiResource('https://api.vk.com').then(data => {
      // вот тут есть ответ
      this.setState({ vkData: data });
    });
    Ответ написан
    1 комментарий
  • Как логически решить такую задачу?

    FairyTaleComposer
    @FairyTaleComposer
    Чтобы получить следующую порцию записей, указываете в параметрах запроса per_page и page. Per_page это количество записей, которое Вам выдаст гитхаб (у вас это pageSize), page - количество этих per_page, которое нужно пропустить. Всё, что Вам нужно, это обновлять page. То есть для запроса следующей страницы нужно к текущему значению page прибавить per_page.

    Чтобы проверить, есть ли куда листать -- проверяете пришедший с гитхаба total_count. Это кол-во записей всего по Вашему запросу.
    if (page * per_page + per_page < total_count) { листаете }
    Для наглядности: если укажете, например, page=2, per_page=4, github пропустит 8 репозиториев.

    Чуть не забыла - в гитхабе page отсчитывается по умолчанию с единицы, а не с нуля.

    Подробнее в документации: https://docs.github.com/en/github-ae@latest/rest/g...
    Ответ написан
    1 комментарий