String.includes 比 String.search 更快吗?

Ahm*_*bai 0 javascript algorithm

word.includes(str)返回boolean表示是否str包含在 中,如果不存在,则word
word.search(str)返回表示第一个在 中找到的number位置的位置。strword-1

起初,我想知道为什么 JavaScript 提供这两种方法,但是可以只创建一种适用于这两种情况的方法,返回位置 else returns undefined,但由于两者都存在,所以它应该是有原因的,也许String.includes更快,或者也许,它是只是为了让事情变得更清楚。

它看起来String.includes应该更快,因为它只检查是否str存在而不是试图找到它的位置,但是,我的简单想法:检查算法str中是否存在应该循环遍历字符(如果有我遗漏的东西让我知道),一旦找到,它就可以轻松检索其位置,所以速度再快不过了。wordwordstrString.includes

我想知道它们之间的真正区别以及两者存在的原因。谢谢你!

dan*_*anh 6

两者之间的最大区别是search()需要正则表达式 - 比匹配更灵活并且(可能)慢,因为可以使用boyer-mooreincludes()之类的东西快速完成

includes()与之对应的算法indexOf()在算法上可能非常相似。有了这对,将 include() 构建为围绕 indexOf() 的 bool 返回包装器是有意义的。