Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Опрос: расскажи, что думаешь про цифровизацию российских банков
Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
0xD34F

0xD34F

  • 6916
    вклад
  • 0
    вопросов
  • 5190
    ответов
  • 90%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как в реакте передать что то из дочернего в родительский компонент?

    0xD34F
    0xD34F @0xD34F
    Ау, документацию для кого сделали?
    Ответ написан 6 часов назад
    3 комментария
    Нравится 2 3 комментария
  • Как синхронизировать input и range slider?

    0xD34F
    0xD34F @0xD34F
    setValue(value === e.target.value);

    Лишнее: value ===.

    Ну и ограничений не хватает, так что:

    setValue(Math.min(max, Math.max(min, e.target.value)));

    UPD. Вынесено из комментариев:

    Хотел реализовать тоже самое с двойным range слайдером и оказалось несколько сложнее.

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

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    const sum = (...v1) => {
      const f = (...v2) => v2.length
        ? sum(...v1, ...v2)
        : v1.reduce((acc, n) => acc + n, 0);
    
      return v1.length ? f : f();
    };
    Ответ написан 20 часов назад
    1 комментарий
    Нравится 1 1 комментарий
  • Как привести массив объектов в один объект?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    const keys = [...new Set(arr.flatMap(Object.keys))];
    
    const result = arr.reduce((acc, n) => {
      keys.forEach(k => acc[k].push(n[k] ?? 0));
      return acc;
    }, Object.fromEntries(keys.map(n => [ n, [] ])));
    Ответ написан вчера
    Комментировать
    Нравится 1 Комментировать
  • Как вызвать функцию чтобы не было ошибки Maximum update depth exceeded?

    0xD34F
    0xD34F @0xD34F
    Вам вообще не надо вызывать эту функцию, если только вы не скрываете задачу, которая стоит перед вами на самом деле. Вы уже применили map - он как раз "для каждого элемента списка".

    Если нужен индекс - он в коллбек map'a передаётся вторым параметром:

    {cats.map((cat, index) => (
      <li key={cat.description} className="catsItem">
        <img src={catsImg[index]} alt=""/>
        ...
    Ответ написан вчера
    6 комментариев
    Нравится 1 6 комментариев
  • Как на jquery в тексте найти ники соцсетей @name и обернуть их ссылкой?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    $('.text').html((i, html) => {
      const regex = /@(\w+)/g;
      const replacement = (m, g1) => `<a href="https:\/\/site.com/${g1}">${m}</a>`;
    
      return html.replace(regex, replacement);
    });
    Ответ написан вчера
    7 комментариев
    Нравится 1 7 комментариев
  • Как вычислить в каком диапазоне находится число?

    0xD34F
    0xD34F @0xD34F
    lower = next((n for n in reversed(lst) if n <= num), float('-inf'))
    upper = next((n for n in lst if n >= num), float('inf'))
    
    print([ lower, upper ])
    Ответ написан вчера
    4 комментария
    Нравится 2 4 комментария
  • Почему возникает ошибка в функции передачи индекса картинки в лайтбоксе?

    0xD34F
    0xD34F @0xD34F
    Потому что вы не видите разницы между функцией и результатом её вызова.

    Добавьте () => перед openLightboxOnSlide(key) (кстати, а какого хрена переменная, содержащая индекс, названа key?).

    Но вообще, дополнительный метод не нужен. И объект хранить в lightIndex не надо. Пусть индекс принимает по умолчанию значение null - это будет означать, что показывать ничего не надо:

    const [ lightIndex, setLightIndex ] = useState(null);

    <img onClick={() => setLightIndex(key)} />

    <ReactBnbGallery
      photos={photos}
      show={lightIndex !== null}
      activePhotoIndex={lightIndex}
      onClose={() => setLightIndex(null)}
    />
    Ответ написан вчера
    3 комментария
    Нравится 2 3 комментария
  • Как сделать проверку 2 json в fetch .then()?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    const urls = [ '...', '...', ... ];
    
    Promise
      .all(urls.map(n => fetch(n).then(r => r.json())))
      .then(обработатьРезультаты)
      .catch(err => console.error(err));
    
    function обработатьРезультаты(results) {
      ...
    }
    Ответ написан 24 янв.
    Комментировать
    Нравится 1 Комментировать
  • Как перебрать строку и вывести на экран нужное?

    0xD34F
    0xD34F @0xD34F
    preg_match_all('~\d+~', $s, $match);
    echo implode(', ', array_map(fn($n) => '!qwertyuio'[$n], $match[0]));
    Ответ написан 24 янв.
    Комментировать
    Нравится 1 Комментировать
  • Почему не получается расширить класс JS?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    return [...el].map((n) => new Select(n));

    Здесь всегда возвращается массив экземпляров базового класса.
    А надо текущего - замените Select на this.constructor.
    Ответ написан 24 янв.
    1 комментарий
    Нравится 2 1 комментарий
  • Как вытащить все объекты из массива по одному общему признаку?

    0xD34F
    0xD34F @0xD34F
    foreach ($arr as $n) {
      $grouped[$n['city']][] = $n;
    }
    Ответ написан 22 янв.
    Комментировать
    Нравится 1 Комментировать
  • Как исправить баги с фильтрации?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    Всё настолько плохо, что исправлять нечего.

    Можно переписать с нуля.
    document.querySelector('.container-filter').addEventListener('input', function() {
      const maxPrice = +this.querySelector('.range').value;
      const brands = [...this.querySelectorAll('.input:checked')].map(n => n.parentNode.innerText);
      const years = [...this.querySelectorAll('.input-date:checked')].map(n => n.parentNode.innerText);
    
      document.querySelectorAll('.device .laptop').forEach(n => {
        const price = parseInt(n.querySelector('.laptop-price').innerText.split(': ')[1]);
        const brand = n.querySelector('.laptop-name').innerText.split(': ')[1];
        const year = n.querySelector('.laptop-year').innerText.split(': ')[1];
    
        n.style.display = (
          (maxPrice >= price) &&
          (!brands.length || brands.includes(brand)) &&
          (!years.length || years.includes(year))
        )
          ? 'block'
          : 'none';
      });
    });

    Говнокод тот ещё получается - но тут уж таков исходный материал.

    Вам стоит рассмотреть вариант с хранением информации о товарах в массиве, чтобы не приходилось выдирать её из разметки. Как оно могло бы быть.
    Ответ написан 22 янв.
    1 комментарий
    Нравится 2 1 комментарий
  • Как отсортировать строку исключительно по алфавиту?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    str.replace(/[a-z]+/gi, m => [...m].sort().join(''))
    Ответ написан 22 янв.
    1 комментарий
    Нравится 1 1 комментарий
  • Как отформатировать строку с датой?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    str.replace(/(\d{2})(\d{2})(\d{4})/, '$1.$2.$3')

    или

    [ 0, 2, 4 ].map((n, i, a) => str.slice(n, a[i + 1])).join('.')
    Ответ написан 22 янв.
    2 комментария
    Нравится 4 2 комментария
  • Как этот код сократить?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    document.querySelector('.child-row').addEventListener('click', e => {
      if (e.target !== e.currentTarget) {
        [...e.currentTarget.children].forEach(n => n.classList.toggle('active', n === e.target));
      }
    });
    Ответ написан 21 янв.
    8 комментариев
    Нравится 1 8 комментариев
  • Как передать компонент для рендера в качестве props?

    0xD34F
    0xD34F @0xD34F
    props.component || <a/>

    props.component || 'a'
    Ответ написан 21 янв.
    1 комментарий
    Нравится 1 комментарий
  • Как в swiper слайдер добавить класс если слайдов не хватает для прокрутки?

    0xD34F
    0xD34F @0xD34F
    on: {
      breakpoint() {
        this.el.classList.toggle('класс', this.slides.length < this.params.slidesPerView);
      },
    },
    Ответ написан 21 янв.
    3 комментария
    Нравится 3 комментария
  • Как в React по клику вне элемента менять его класс?

    0xD34F
    0xD34F @0xD34F
    Забыли добавить ref={ref} элементу, который собираетесь скрывать.

    Ну и вы бы ещё определились, как именно элемент должен отображаться/скрываться - через условный рендеринг, или стилизацию. Зачем использовать оба способа одновременно - я без понятия.
    Ответ написан 21 янв.
    1 комментарий
    Нравится 1 комментарий
  • Как получить количество элементов по заданному атрибуту?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    document.querySelector('.content').addEventListener('click', e => {
      const { block } = e.target.dataset;
      if (block) {
        console.log(document.querySelectorAll(`.wrap [data-block="${block}"]`).length);
      }
    });
    Ответ написан 21 янв.
    Комментировать
    Нравится 1 Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • Следующие →
Самые активные сегодня
  • hello_my_name_is_dany
    • 20 ответов
    • 0 вопросов
  • Василий Банников
    • 15 ответов
    • 0 вопросов
  • hottabxp
    Сергей Карбивничий
    • 8 ответов
    • 0 вопросов
  • Sanes
    Sanes
    • 7 ответов
    • 0 вопросов
  • shebanits
    • 6 ответов
    • 0 вопросов
  • Dr. Bacon
    • 6 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации