在Jquery对象中搜索存储在数组中的多个字符串

时间:2018-06-26 15:09:15

标签: javascript arrays indexof

我不确定我的问题的标题是否有意义,但是我在努力使此代码正常工作时会尝试进一步解释。

我正在浏览页面以查找任何脚本标记,然后提取它们的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 :(得分:0)

您正在寻找directoryNames.indexOf(srcVal)

indexOf函数将在找到的元素(srcVal)的数组中返回索引,如果找不到,它将返回-1。

最终产品:

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

答案 1 :(得分:-2)

 if(directoryNames.some(name => srcVal.includes(name)))

只需遍历所有目录名称,然后检查它们是否属于当前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;
}

因此,您可以使用以下方法检查网址:

if(srcVal.split("/").reduce((acc, path) => acc[path] || {}, root).isEnd)