• Как узнать, есть ли в массивах одинаковые значения?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Делаем просто, ровно то, что спрошено в вопросе:

    arr1.filter(n => arr2.includes(n)).length !== 0
    
    // или
    
    arr1.some(Set.prototype.has.bind(new Set(arr2)))
    
    // или
    
    new Set(arr1).size + new Set(arr2).size > new Set([ ...arr1, ...arr2 ]).size

    Делаем сложно, решаем задачу в более общем виде - сделаем функцию, которая будет находить пересечения среди значений, выдаваемых двумя итераторами, причём под равенством значений может подразумеваться не непосредственное их равенство, а равенство некоторых производных значений:

    function intersection(data1, data2, key = n => n) {
      const getKey = key instanceof Function ? key : n => n[key];
      const keys = new Set(Array.from(data2, getKey));
      const result = [];
    
      for (const n of data1) {
        if (keys.has(getKey(n))) {
          result.push(n);
        }
      }
    
      return result;
    }
    
    
    // как применять в вашем случае
    !!intersection(arr1, arr2).length
    
    // другие примеры использования
    intersection(Array(5).keys(), Array(3).keys()) // [0, 1, 2]
    intersection('abcDe', 'cd', n => n.toLowerCase()) // ['c', 'D']
    intersection([{id: 1}, {id: 2}, {id: 3}], [{id: 2}, {id: 4}], 'id') // [{id: 2}]
    Ответ написан
    1 комментарий
  • Как показывать/скрывать поле из таблицы при определенных условиях?

    pLavrenov
    @pLavrenov
    Разработка сайтов
    Ответ написан
    Комментировать
  • Cookie или localStorage?

    sabramovskikh
    @sabramovskikh
    Где хочешь - там и храни. Всё что хранится на фронте - известно "всем и каждому".
    Ответ написан
    Комментировать
  • Cookie или localStorage?

    DevMan
    @DevMan
    ни куки, ни локалсторедж не имеют ничего общего с безопасностью.
    но в любом случае, при наличии выбора, стоит выбирать локалсторедж.
    Ответ написан
    4 комментария
  • Как грамотно организовать работу redux?

    @Vlad_Murashchenko
    Вам в любом случае нужно будет хранит access, refresh, access_expires_in, refresh_expires_in в каком-то защищённом месте недоступном для других приложений но доступном из js. Я использую для этого localStorage.

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

    Напишите свой небольшой сервис auth который будет инкапсулировать в себе логику проверки токенов на актуальность, авторизацию, аутентификацию, обновления токенов, их очистки и хранения в localStorage.

    Перед каждым запросом делайте проверку аксесс токена, если он заекспайрился, то делайте рефреш откладывая все последующие запросы до его резолва, если рефреш не удался то просто кидайте пользователя на логин. В этом вам может помочь axios intercepters.

    С остальными я думаю вы разберётесь :)

    Также почитать про то как хорошо организовать работу с токеновми можно здесь https://gist.github.com/zmts/802dc9c3510d79fd40f9d...
    Ответ написан
    1 комментарий
  • Как составить логический оператор?

    @dimuska139
    Backend developer
    Советую для этих целей поставить удобную библиотечку classnames. С ней подобные конструкции (и гораздо более сложные) выглядят проще:
    const classNames = require('classnames');
    ...
    <div className={classNames( "form-textbox-label", {
       "field-active": this.state.fieldActive
    })}></div>
    Ответ написан
    Комментировать
  • Как грамотно составить таблицу и пагинацию?

    @gian_tiaga
    brands
    - id
    - name

    models
    - id
    - name
    - brand_id
    - sort

    В поле сорт просто указываете числовой порядок, что за чем должно идти
    Ответ написан
    Комментировать
  • Как рисовать с помощью SVG path?

    Stalker_RED
    @Stalker_RED
    Иллюстратор существует, стопудов. Сам видел!
    А туториал нужен про то, как нарисовать в иллюстраторе или где у него в меню файл→экспорт?

    Попробуйте может inkscape.

    Если именно по координатам, то там ничего сложного
    <svg viewBox="5 5 50 50">
      <path d="M10 10 L10 20 L20 20 Z" fill="red"></path>
      <path d="M15 10 l10 0 l0 10 Z" fill="blue"></path>
      <path d="M10 25 h 7 v 7 Z" fill="#FACE8D"></path>
    </svg>
    вот так оно работает

    viewBox - координаты верхнего левого и нижнего правого угла видимой части холста.
    M - переместить курсор и координаты x и y
    L - нарисовать линию, и тоже координаты.
    Z - замкнуть фигуру (соединить последнюю точку с первой)
    l - нарисовать линию, но не абсолютные координаты, а сдвиг относительно предыдущей точки
    H - нарисовать линию по горизонтали, и координата
    h - нарисовать линию по горизонтали, но вместо координаты сдвиг.
    V и v - та-же фигня, но по вертикали
    и так далее
    Ответ написан
    2 комментария