Javascript-检查字符串是否是数组中字符串的一部分

Javascript-检查字符串是否是数组中字符串的一部分,javascript,arrays,google-chrome,Javascript,Arrays,Google Chrome,我有一个数组,其中列出了几个网站: 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 现在我需要检查这个地址是否是有效的站点之一。 所以 会被认为

我有一个数组,其中列出了几个网站:

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
现在我需要检查这个地址是否是有效的站点之一。 所以

会被认为是正确的。 但是

将被认为是不正确的

现在我知道你可以做一个indexOf(),它可以检查字符串是否是字符串的一部分,如果为false,它将返回-1。但是我如何在整个阵列中检查它呢

p.s-其用于镀铬扩展

谢谢

这里有一个想法:

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示例_1.Comyoyo

在这种情况下,如果可以从数组中切换,我将使用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.
};
//…您的检查功能将是:


您可以通过循环和设置flag变量来实现这一点,试试这个,我没有测试过这个。 我只是直接输入了代码。我想这可能对你有帮助

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 } 
var标志=0;
var givenurl='example_1.com/*ANYTHING*';

对于(int i=0)我建议
!indexOf()
相反。他不是要求精确匹配,而是要求子字符串。我认为他想要任何有效的子字符串,而不仅仅是组件。或者至少他是这么说的。添加了一个使用regexp的示例,以更精细地控制匹配。显然,如果你不能从数组中切换,这是不可能的。如果任何答案都有助于你这么做解决您的问题确保您将该答案标记为已接受,以向未来的用户表明哪些答案对您有效。阅读本文,并请接受正确的答案,谢谢。如果您的问题已解决,则将下面的答案标记为已接受,这将大大有利于整个社区。受访者花时间提出答案,这将非常有帮助谢谢你花点时间来表彰他们的贡献。
var str = 'example_1.com/something/something_else';
new RegExp('^('+validSites.join('|')+')','i').test(str);
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;
}
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 }