我正在处理JavaScript的性能问题。所以我只想问:检查一个字符串是否包含另一个子字符串的最快方法是什么(我只需要布尔值)?您能否提出您的想法和示例代码片段?
您有两个可能性:
正则表达式:
(new RegExp('word')).test(str)
// or /word/.test(str)
indexOf:
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%快)
<-- wow
请注意, 缓存的RegExp 是:var r = new RegExp('simple'); var c =r.test(str);相对于:/simple/.test(str)
var r = new RegExp('simple'); var c =r.test(str);
/simple/.test(str)