簡體   English   中英

在javascript中查找字符串中存在哪些子字符串的最快方法是什么?

[英]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 JohnMr.John (請注意,第二個字符串中沒有空格)。

var returnedName='Howdy,James!';

我知道的是,返回的字符串將只包含在提及的一個字符串namesArray和沒有了,我不知道周圍的字符字符串可能在知識returnedName

什么是要知道這在字符串的最快方法namesArray是的一個子returnedName 我期待它返回字符串的指數函數namesArray是的一個子returnedName 這樣的內置功能是否存在? 如果不是,那么最快的方法是什么(例如,我有一個包含大約 100k 個名字的 namesArray)?

這似乎更像是一個搜索問題。 顯然,在搜索時,您確實需要進行比較以匹配您的搜索詞。 對於這個問題,在 JavaScript 中,您可以考慮RegexindexOf 但是為了使其更快以獲得更好的時間復雜度,您必須考慮一些比數組上的線性迭代更好的搜索算法(可能是二分搜索)。

有多種方法可以檢查字符串是否包含另一個子字符串。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM