Есть ли более быстрый способ проверки наличия элемента в списке

Поддержка
  • Нужно периодически проверять некоторое количество ссылок на наличие в списке.
    Неполное совпадение тоже считается (например в списке есть example.com/link, значит для example.com/link/1/, example.com/link?x=1&y=2 и т. п. положительный результат, для example.сom/URL - отрицательный)
    База данных, normalize URL и модуль список -> "содержит" на точное совпадение, regex намертво вешают BAS, если в списке или очереди на проверку много ссылок. Единственный относительно рабочий - класть весь список в переменную и через if ([[LIST]]).lastIndexOf([[LINK]]) >= 0 проверять, что тоже вешает скрипт, но спустя некоторое время результат все же выдает. Есть ли какой-нибудь более быстрый/надежный способ?

  • @adsffdsa можно пробовать сторонние средства не поставляемые в бас.
    базы данных, инструменты командной строки, веб/локальные-серверы тп.
    можно попробовать реализовать через node.js, пайтон и др. ЯП

    например можно попробовать использовать альтернативные ram db.

  • @adsffdsa said in Есть ли более быстрый способ проверки наличия элемента в списке:

    Есть ли какой-нибудь более быстрый/надежный способ?

    Если в изначальном списке присутствуют разные домены, можно использовать объект для эффективного разделения и быстрого доступа к ссылкам по доменам. Сначала можно обратиться к объекту по ключу домена, чтобы получить список ссылок для этого домена.
    Затем можно применить lastIndexOf для проверки конкретной ссылки.

    Пример структуры объекта:

    const domainLinks = {
      "example.com": ["example.com/link", "example.com/anotherlink"]
    };
    
    function linkExists(domain, link) {
      if (!domainLinks[domain]) return false;
      
      return domainLinks[domain].lastIndexOf(link) !== -1;
    }
    
    // Пример использования:
    const domain = "example.com";
    const linkToCheck = "example.com/link";
    
    if (linkExists(domain, linkToCheck)) {
      console.log("Found.");
    } else {
      console.log("Not found");
    }
    

    P.S.
    Можно использовать встроенные средства БД для таких запросов, если данные хранятся там.