2017-05-25 116 views
0

我还在学习JavaScript,但我似乎无法找到一种方法来查看一个字符串是否包含子字符串。如何检查一个字符串是否包含JavaScript中的字符串数组的字符串

基本上我有一些人的标题,我想看看标题是否包含标题中的“总统”或“高级”字符串,这是迄今为止,但似乎没有工作。

var title = "President of Sales"; 
var arrayOfTitles = ["President","Chief","VP","SVP","Director","Manager","Mrg","Sr","Senior","Executive Assistant","Principle Architect","GM","Technical Advisor"]; 

var re = new RegExp(arrayOfTitles.join("|"),"i"); 

for(i = 0; i < arrayOfTitles.length; i++){ 
     if (re.test(gr.title)){ 
      return; 
       } 
    } 

但是,此代码不适用于字符串喜欢“Jr VP”或“销售总裁”。有没有办法构建这些字符串的正则表达式数组?

任何帮助将是巨大的感谢

+1

您正在寻找精确的匹配,所以不使用正则表达式,使用['indexOf'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects /字符串/的indexOf)。如果您想要区分大小写的搜索,请在字符串和关键字上应用toLowerCase。而且,除非上述内容在函数上下文中,否则“返回”没有多大意义。如果您对整个测试的积极或消极结果感兴趣,请使用'break'离开循环,并预先设置一个标志。 – CBroe

+0

使用'arrayOfTitles'构建的单个正则表达式应该可以工作,但是如果你这样做了,则不需要遍历相同的数组。尝试'重新测试(标题)'*没有*循环 - 这对我来说工作得很好。 – nnnnnn

+0

我正在寻找一些能够匹配这些关键字的东西 – agarc

回答

1

你并不需要运行一个循环

var title = "President of Sales"; 
 
var arrayOfTitles = ["President","Chief","VP","SVP","Director","Manager","Mrg","Sr","Senior","Executive Assistant","Principle Architect","GM","Technical Advisor"]; 
 

 
var regex = new RegExp(arrayOfTitles.join("|"), "i"); 
 
//The regex will return true if found in the array 
 
if (regex.test(title)){ 
 
    console.log("has"); 
 
}

+0

这是否适用于Array中包含字符串的任何字符串? – agarc

+0

@agarc当然你不会有问题 – AvrilAlejandro

1

如何喜欢简单的东西:

var title = "President of Sales"; 
 
var arrayOfTitles = ["President","Chief","VP","SVP","Director","Manager","Mrg","Sr","Senior","Executive Assistant","Principle Architect","GM","Technical Advisor"]; 
 
var matches = (function() { 
 
    for(var i=0; i < arrayOfTitles.length; i++) { 
 
\t if(title.indexOf(arrayOfTitles[i]) > -1) { return true; } 
 
    } 
 
    return false; 
 
}());

0

您也可以使用includes()函数,而不是indexOf()。

 var title = "President of Sales"; 
     var arrayOfTitles = ["President","Chief","VP","SVP","Director","Manager","Mrg","Sr","Senior","Executive Assistant","Principle Architect","GM","Technical Advisor"]; 
     var matches = (function() { 
     for(var i=0; i < arrayOfTitles.length; i++) { 
       if(title.includes(arrayOfTitles[i])) { return true; } 
     } 
     return false; 
     }()); 
相关问题