[英]What is the fastest way to find which of the substrings is present in a string in javascript?
好吧,可能這個問題很奇怪。 讓我解釋一個手頭的案例。 我在一個數組中有 5 個名字,例如:
var namesArray=['John','Henry','Smith','James','Carl'];
而且我還有一個來自其他操作的字符串,其中包含這些字符串之一並帶有稱呼,比如Hello John
或Mr.John
(請注意,第二個字符串中沒有空格)。
var returnedName='Howdy,James!';
我知道的是,返回的字符串將只包含在提及的一個字符串namesArray
和沒有了,我不知道周圍的字符字符串可能在知識returnedName
。
什么是要知道這在字符串的最快方法namesArray
是的一個子returnedName
? 我期待它返回字符串的指數函數namesArray
是的一個子returnedName
。 這樣的內置功能是否存在? 如果不是,那么最快的方法是什么(例如,我有一個包含大約 100k 個名字的 namesArray)?
如果我很了解您的問題,請參閱https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf 。
確實有一個 for 循環......
請參閱Javascript 性能:為什么遍歷數組並檢查每個值比 indexOf、搜索和匹配更快? 或在Javascript中檢查字符串包含另一個子字符串的最快方法? 有關性能問題的更多精度。
有多種方法可以檢查字符串是否包含另一個子字符串。
var str = "Hello world, welcome to Javascript Coding.";
var n = str.indexOf("welcome");
//Returns Index no 13
var s = "foo";
console.log(s.indexOf("oo") > -1)
//returns true
您也可以使用 string.includes 方法來實現相同的結果
var str = "Hello World, Welcome to Javascript Coding";
console.log(str.includes("Welcome to")); // true
console.log(str.includes("Javascript")); // true
console.log(str.includes("To be", 1)); // false
您必須遍歷數組,檢查字符串是否包含數組值,如果包含,則中斷循環(因為只能有一個)並設置一個變量:
var containsName = '';
for (var i=0; i<namesArray.length; i++) {
if ( returnedName.indexOf( namesArray[i] ) != -1 ) {
containsName = namesArray[i];
break;
}
}
alert( containsName );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.