小编典典

检查字符串的最快方法是在JavaScript中包含另一个子字符串?

javascript

我正在处理JavaScript的性能问题。所以我只想问:检查一个字符串是否包含另一个子字符串的最快方法是什么(我只需要布尔值)?您能否提出您的想法和示例代码片段?


阅读 276

收藏
2020-05-01

共1个答案

小编典典

您有两个可能性:

  1. 正则表达式:

    (new RegExp('word')).test(str)
    

    // or
    /word/.test(str)

  2. indexOf

    str.indexOf('word') !== -1
    

更新:

不能肯定地说哪种方法更快。浏览器之间的差异是巨大的。虽然在Chrome 10中indexOf似乎更快,但在Safari 5
indexOf中显然比任何其他方法都慢。

您必须看到并尝试自我。这取决于您的需求。例如 ,不区分大小写的 搜索使用正则表达式会更快。


更新2018:

为了使人们免于自己运行测试,以下是大多数常见浏览器的当前结果,这些百分比表示性能比第二快的结果有所提高(在不同的浏览器中有所不同):

Chrome: indexOf(〜98%快)<-- wow
Firefox: 缓存RegExp(
〜18 %快) IE11: 缓存RegExp(〜10%快)
Edge: indexOf(〜18%快)
Safari: 缓存RegExp(〜0.4%快)

请注意, 缓存的RegExp 是:var r = new RegExp('simple'); var c =r.test(str);相对于:/simple/.test(str)

2020-05-01