我需要檢查,如果某些字符串包含另一個字符串(子),以便能 有人告訴我其中的這個執行得更快:什麼解決方案在JavaScript中搜索子串的速度更快?
someString.includes(thisSubstring) or
someString.indexOf(thisSubstring) !== -1
這取決於從瀏覽器?有沒有更快的解決方案?
我需要檢查,如果某些字符串包含另一個字符串(子),以便能 有人告訴我其中的這個執行得更快:什麼解決方案在JavaScript中搜索子串的速度更快?
someString.includes(thisSubstring) or
someString.indexOf(thisSubstring) !== -1
這取決於從瀏覽器?有沒有更快的解決方案?
indexOf
更快,但您可以輕鬆地自行運行這些測試。
在未來你可以使用下面的模式來衡量執行時間:
var str1 = "nananananaananana Catman!";
var str2 = "Catman!";
var max = 10000000;
var t = new Date();
for(var i = 0; i < max; i++) {
str1.indexOf(str2) >= 0;
}
console.log("indexOf",new Date() - t);
t = new Date();
for(var i = 0; i < max; i++) {
str1.includes(str2);
}
console.log("includes",new Date() - t);
t = new Date();
for(var i = 0; i < max; i++) {
str1.indexOf(str2) >= 0;
}
console.log("indexOf",new Date() - t);
t = new Date();
for(var i = 0; i < max; i++) {
str1.includes(str2);
}
console.log("includes",new Date() - t);
爲什麼不[https://jsperf.com/ ](https://jsperf.com/faq#what)? – Prusse
@Prusse如果這是一個複雜度較高的問題,我可能會這樣做,但是通過這樣簡單的操作,我想通過展示這些簡單的東西給OP提供工具來記錄她/他喜歡的事情(私人單元測試,快速性能測試等)最簡單的性能測試模式。 –
衡量自己。 –
轉到https://jsfiddle.net/,創建一個字符串,用一個重複n次的計時器創建一個循環並執行n包含檢查。然後用一個計時器執行另一個循環,執行n'indexof'檢查。然後回到這裏,把小提琴和你的回答放在哪一個更快。 – Forklift
使用搜索。這是一個重複的http://stackoverflow.com/questions/5296268/fastest-way-to-check-a-string-contain-another-substring-in-javascript – Zefick