2017-05-25 131 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; 
     }()); 
相關問題