我有一个列出几个网站的数组:
var validSites = new Array();
validSites[0] = "example_1.com";
validSites[1] = "example_2.com";
validSites[2] = "example_3.com";
现在我有一个小脚本来检查你所在的网址,并可以返回这样的内容:
example_1.com/something/something_else
现在我需要检查该地址是否是有效站点之一。 所以
example_1.com/*ANYTHING*
将正确传递。 但
exampleshmample.com
会传递错误。
现在我知道你可以做一个indexOf(),它可以检查字符串是否是字符串的一部分,如果为false则返回-1。但我如何通过整个阵列检查它?
P.s - 用于Chrome扩展程序。
感谢
答案 0 :(得分:5)
这是一个想法:
var str = 'example_1.com/something/something_else';
if( validSites.indexOf( str.split('/')[0] ) > -1 ) {
// is valid
}
另一个是在连接数组上使用regexp:
var str = 'example_1.com/something/something_else';
new RegExp('^('+validSites.join('|')+')','i').test(str);
这也将匹配f.ex example_1.comyoyoyo
答案 1 :(得分:1)
if (validStates.indexOf("example_1.com") > -1) {
// Then it's inside your array
}
else {
// Then it's not inside your array
}
答案 2 :(得分:0)
如果你可以从数组中切换,我会选择json表示法
var validSites = {
"example_1.com":"valid",
"example_2.com":true,
"example_3.com":1 //you could even start putting paths in here to beef up your check.
};
// ..你的检查功能是: .....
if(validSites[window.location.hostname]){
return true;
}else{
return false;
}
答案 3 :(得分:0)
你可以通过循环和设置标志变量来实现这一点,试试这个,我没有测试过这个。 我直接输入了代码。我认为这可能会对你有所帮助
var flag =0;
var givenurl='example_1.com/*ANYTHING*';
for(int i=0 i<validSites.length;i++){
if(givenurl.indexOf(validSites[i])){
flag=1 //Found
}
}
if(flag) { //Url Found }else{ //not found }