Ответы пользователя по тегу JavaScript
  • Как проверить два объекта по шаблону?

    Enokin
    @Enokin
    Full-stack разработчик
    const template = {
        d: "какие то слова к которым не нужно привязываться, главное что бы был ключ d",
        m: "Числовое целое поле"
    };
    
    function validateAgainstTemplate(obj, template) {
        let keys = Object.keys(obj);
        for (let key of keys) {
            if (!template.hasOwnProperty(key)) return false;  // если в шаблоне нет такого ключа
            if (key === "m" && obj[key] !== 1) return false;  // если значение ключа m не равно 1
        }
        return true;  // если все проверки пройдены
    }
    
    let testObj1 = {
        d: "слово",
        m: 1
    };
    
    let testObj2 = {
        d: "слово",
        m: 23,
        s: "слово 2"
    };
    
    console.log(validateAgainstTemplate(testObj1, template));  // true
    console.log(validateAgainstTemplate(testObj2, template));  // false
    Ответ написан
    1 комментарий
  • Как выполнить запрос н-раз?

    Enokin
    @Enokin
    Full-stack разработчик
    Через setTimeout и нужно делать

    let counter = 0;
    
    const doRequest = () => {
      // Увеличиваем счетчик
      counter++;
    
      // Выполняем запрос
      fetch('https://your-request-url.ru')
        .then(response => response.json())
        .then(data => {
          console.log(data);
    
          // Если счетчик меньше 5, устанавливаем таймер для следующего запроса
          if (counter < 5) {
            setTimeout(doRequest, 5000); // Устанавливаем задержку в 5 секунд
          }
        })
        .catch(error => console.error(error));
    };
    
    // Начинаем выполнение
    doRequest();
    Ответ написан
    Комментировать
  • Как определить, что дата прошла?

    Enokin
    @Enokin
    Full-stack разработчик
    let strDate = "May 2021"; 
    let dateToCheck = new Date(strDate);
    let currentDate = new Date();
    
    // Обнуляем время, чтобы сравнение было только по дате (день, месяц, год)
    dateToCheck.setHours(0,0,0,0);
    currentDate.setHours(0,0,0,0);
    
    if(dateToCheck.getTime() < currentDate.getTime()){
        console.log("Дата уже прошла");
    } else {
        console.log("Дата еще не наступила");
    }
    Ответ написан
    3 комментария
  • Как с angular (typescript) заполнить шаблон документа Word?

    Enokin
    @Enokin
    Full-stack разработчик
    Посмотри на такие библиотеки как mammoth.js или docxtemplater.
    Ответ написан
    Комментировать
  • Как выполнить авто установку временного дополнения при запуске Firefox?

    Enokin
    @Enokin
    Full-stack разработчик
    Firefox поддерживает использование политик предприятий для управления различными аспектами браузера, включая установку дополнений. Вы можете создать JSON-файл с политикой, который указывает Firefox устанавливать определенные дополнения при запуске
    {
      "policies": {
        "Extensions": {
          "Install": ["https://addons.mozilla.org/firefox/downloads/file/3579254/ublock_origin-1.37.2-an+fx.xpi"],
          "Locked":  ["uBlock0@raymondhill.net"]
        }
      }
    }


    Этот JSON-файл указывает на установку uBlock Origin из AMO и блокирует его удаление. Файл политик должен быть сохранен под именем policies.json в каталоге distribution, который находится в том же каталоге, что и исполняемый файл браузера.
    Ответ написан
    5 комментариев
  • Как написать функцию с колбеком и через секунду выводить в консоль число?

    Enokin
    @Enokin
    Full-stack разработчик
    Если правильно понял, то можно так

    let timer;
    function func(n, callback) {
        if (n <= 10) {
            console.log(n);
            if (callback) {
                timer = setTimeout(() => {
                    callback(n + 1, callback);
                }, 1000);
            }
        } else {
            clearTimeout(timer);
        }
    }
    
    func(1, func);
    Ответ написан
    Комментировать
  • Как на js реализовать произвольную смену чисел?

    Enokin
    @Enokin
    Full-stack разработчик
    // Получить случайное число от 85 до 90 включительно
    function getRandomNumber() {
      return Math.floor(Math.random() * (90 - 85 + 1)) + 85;
    }
    
    // Отобразить случайное число на странице
    function displayRandomNumber() {
      const number = getRandomNumber();
      document.getElementById("number").innerHTML = number;
    }
    
    // Перезагрузить страницу через 60 секунд
    function reloadPage() {
      setTimeout(function() {
        location.reload();
      }, 60 * 1000);
    }
    
    // Запустить код при загрузке страницы
    window.onload = function() {
      displayRandomNumber();
      reloadPage();
    };

    <div id="number"></div>
    Ответ написан
    8 комментариев
  • Получить массив уникальных значений?

    Enokin
    @Enokin
    Full-stack разработчик
    const uniqueIds = {};
    const uniqueArray = [];
    
    for (const item of array) {
      if (!uniqueIds[item.itemUniqId]) {
        uniqueIds[item.itemUniqId] = true;
        uniqueArray.push(item);
      }
    }
    
    console.log(uniqueArray);
    Ответ написан
    Комментировать
  • Как можно выяснить, что на форме есть onSubmit?

    Enokin
    @Enokin
    Full-stack разработчик
    let form1 = document.querySelector('form[name="myform"]');
    let form2 = document.querySelector('form[name="myform2"]');
    
    if (form1.onsubmit) {
      console.log("Существует обработчик события onsubmit, прикрепленный к form1.");
    } else {
      console.log("Не существует обработчик события onsubmit, прикрепленный к form1.");
    }
    
    if (form2.onsubmit) {
      console.log("Существует обработчик события onsubmit, прикрепленный к form2.");
    } else {
      console.log("Не существует обработчик события onsubmit, прикрепленный к form2.");
    }
    Ответ написан
    Комментировать
  • Как сделать скриншот содержимого IFrame?

    Enokin
    @Enokin
    Full-stack разработчик
    const takeIFrameScreenshot = (iframeId) => {
      const iframe = document.getElementById(iframeId);
      const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
      const iframeBody = iframeDoc.body;
      
      const canvas = document.createElement('canvas');
      canvas.width = iframeBody.scrollWidth;
      canvas.height = iframeBody.scrollHeight;
      
      const ctx = canvas.getContext('2d');
      ctx.drawImage(iframe, 0, 0, canvas.width, canvas.height);
      
      const screenshot = canvas.toDataURL();
      
      return screenshot;
    }
    Ответ написан
  • Как сделать свайп двумя пальцами?

    Enokin
    @Enokin
    Full-stack разработчик
    <div id="element">Swipe me with two fingers!</div>
    
    <script src="https://cdn.jsdelivr.net/npm/hammerjs@2.0.18/hammer.min.js"></script>
    <script>
      const element = document.getElementById("element");
      const hammer = new Hammer(element);
      hammer.get('swipe').set({ direction: Hammer.DIRECTION_ALL, threshold: 5, pointers: 2 });
    
      hammer.on('swipe', function(ev) {
        console.log('Two-finger swipe event detected!', ev);
      });
    </script>
    Ответ написан
  • Как объединить коллекции в JS?

    Enokin
    @Enokin
    Full-stack разработчик
    const newCollection = dataLink.map(item1 => {
      const item2 = dataInfo.find(i => i.lnk === item1.lnk);
      return { ...item1, ...item2 };
    });


    Этот код сопоставляет массив ссылок на данные и для каждого элемента находит соответствующие данные в элементе, проверяя, соответствует ли свойство lnk. Наконец, он создает новый объект путем объединения свойств обоих элементов и возвращает его. Результатом будет массив объектов c обьектами { link: link, img: img, desc: desc }.
    Ответ написан
  • Как узнать геолокацию пользователя?

    Enokin
    @Enokin
    Full-stack разработчик
    JavaScript может использовать API браузера Geolocation, чтобы узнать геолокацию пользователя. Вот пример кода, который выводит широту и долготу:
    if ("geolocation" in navigator) {
      navigator.geolocation.getCurrentPosition(function(position) {
        let lat = position.coords.latitude;
        let lng = position.coords.longitude;
        let API_KEY = "YOUR_API_KEY";
        let url =
          "https://maps.googleapis.com/maps/api/geocode/json?latlng=" +
          lat +
          "," +
          lng +
          "&key=" +
          API_KEY;
        fetch(url)
          .then(function(response) {
            return response.json();
          })
          .then(function(data) {
            let address = data.results[0].formatted_address;
            console.log("Address: " + address);
          });
      });
    } else {
      console.log("Geolocation is not supported by this browser.");
    }

    Обратите внимание, что для использования Google Maps API вам нужен API-ключ. Информацию о том, как его получить, можно найти на сайте Google Developers.
    Ответ написан
    Комментировать
  • Как выбрать текст в кавычках «елках»?

    Enokin
    @Enokin
    Full-stack разработчик
    Вы можете использовать регулярные выражения в JavaScript, чтобы выбрать текст в кавычках. Например:
    let str = '«Брат Волк» Мишель Пейвер';
    let regex = /«(.*?)»/g;
    let match = regex.exec(str);
    console.log(match[1]); // Output: Брат Волк

    В этом примере регулярное выражение /«(.*?)»/g ищет текст в кавычках « и », а содержимое между ними (.*?) сохраняется в группе (()). Функция exec выполняет поиск первого соответствия в строке str, а содержимое группы можно получить через индекс [1] в результате поиска.
    Ответ написан
    Комментировать
  • Как подключать пакеты с webpack, если эти пакеты начинаются с @ в названии?

    Enokin
    @Enokin
    Full-stack разработчик
    Чтобы подключить пакеты начинающиеся с @ в webpack, нужно использовать полный путь к пакету, включая @. Например, если вы хотите подключить пакет "@material-ui/core", то ваш код будет выглядеть следующим образом:
    import { Button } from '@material-ui/core';
    В файле webpack.config.js вам необходимо установить путь к пакету следующим образом:
    resolve: {
      alias: {
        '@material-ui/core': path.resolve(__dirname, 'node_modules', '@material-ui/core'),
      },
    },
    Ответ написан
  • Как валидировать несколько форм с помощью плагина just validate?

    Enokin
    @Enokin
    Full-stack разработчик
    Чтобы проверить несколько форм с помощью плагина Just Validate, вы можете выполнить следующие действия:

    Включите плагин JustValidate в свой HTML-файл:
    <script src="https://cdn.jsdelivr.net/npm/just-validate@1.0.1/dist/js/just-validate.min.js"></script>


    Добавьте атрибут data-jsv к каждой форме, которую вы хотите проверить, указав уникальное значение для каждой формы. Например:
    <form data-jsv="form-1">
      <!--  интуты тут -->
    </form>
    <form data-jsv="form-2">
      <!--  интуты тут -->
    </form>

    Инициализируйте плагин Just Validate для каждой формы, передавая значение data-jsv формы в качестве первого аргумента и объект options в качестве второго аргумента. Например:
    <script>
      new JustValidate( 'form-1', {});
      new JustValidate( 'form-2', {});
    </script>

    Добавьте правила проверки для каждого ввода, используя атрибуты data-jsv-*. Например:
    <input type="text" data-jsv-required="true" data-jsv-pattern="^[a-zA-Z]+$">

    Вот и все! Плагин JustValidate теперь будет проверять формы всякий раз, когда пользователь пытается их отправить.
    Ответ написан