JS中判断字符串中是否含有一个子串
题目我就不过多解释了,这篇文章是对 stackoverflow 上一个问题的总结,如果英文不是特别差的话,推荐大家点击上面链接看大家对这个问题的详细讨论
实现方案
indexOf
1 | var string = "foo", |
String 的原型方法,返回一个字符串在另一个字符串中的位置,如果没有找到的话就返回 -1;也是大家经常用的方案
ES6 的 includes
1 | var string = "foo", |
ES6 中新增的 String 原型方法(其实 Array 原型也有 includes 方法),可以点击这里查看文档
search
1 | var string = "foo", |
String.prototype.search() 执行正则表达式和 String 对象之间的一个搜索匹配,所以参数需要是正则表达式,点击这里查看中文文档
lodash 的 includes
1 | var string = "foo", |
lodash 是一个前端库,其提供了一些更加拥抱未来的方法,其中就有 _.includes(str,substr)
RegExp 和 test
1 | var string = "foo", |
“正则表达式是万能的”,RegExp.prototype.test(str)
match
1 | var string = "foo", |
和上面的 test 正好相反,match 方式是 String 的原型方法,String.prototype.match(expr)
性能比较
既然有这么多方法都可以实现,那么哪一种才是“性能最优”的方法呢?早就有前辈替我们做了测试,可以点击这里查看测试结果,或者直接看下面这张图片:
不出所料,果然原生方法 indexOf() 是最快的,所以我们以后就还尽量用 indexOf() 吧!
赏
支付宝打赏 微信打赏
听说赞过就能年薪百万