Поиск в объекте Jquery нескольких строк, хранящихся в массиве - PullRequest
0 голосов
/ 26 июня 2018

Я не совсем уверен, имеет ли смысл мой вопрос какой-либо смысл, но я постараюсь объяснить его дальше, пытаясь заставить этот код работать.

Я сканирую страницу на наличие каких-либо тегов сценария и затем извлекаю из них значения src. Все, что я хочу сейчас сделать, - это проверить, есть ли у объекта Jquery один из двух определенных каталогов. Если это произойдет, то я сделаю с ними другую работу. Мой код до сих пор выглядит так;

var scriptTags = $('script');
var directoryNames = ['abc/custom','xyz/custom'];

for (var i = 0; i < scriptTags.length; i++) {
    var srcVal = scriptTags[i].src;
    if (ANY DIRECTORY NAME VALUES FOUND WITHIN scriptTags) {
        console.log('found');
    }

}

Я бы очень признателен, если бы кто-нибудь мог пролить свет на это, пожалуйста?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018
 if(directoryNames.some(name => srcVal.includes(name)))

Просто просмотрите все имена каталогов и проверьте, являются ли они частью текущего URL. Или, если у вас много URL-адресов, может быть лучше построить дерево каталогов:

const root = {};
for(const url of directoryNames) {
  let acc = root;
   for(const path of url.split("/")) {
     acc = acc[path] = acc[patch] || {};
   }
   acc.isEnd= true;
}

Итак, вы можете проверить URL с помощью:

if(srcVal.split("/").reduce((acc, path) => acc[path] || {}, root).isEnd)
0 голосов
/ 26 июня 2018

Вы ищете directoryNames.indexOf(srcVal).

Функция indexOf вернет индекс в массиве найденного элемента (srcVal) и, если он не найден, вернет -1.

Конечный продукт:

if(directoryNames.indexOf(srcVal) > -1) ...

...