Javascript里面最常用的6种查找字符串的方式——以及它们的性能测试

2019-07-16 admin

在字符串中搜索子字符串,是最基本的操作之一,我们经常会遇到,我通常做的是,查看代码中的其他地方,看看其他人都做了什么,然后做同样的事情!现在,我只是想提出一些最常用的选项,以及它们之间的性能比较,以防您关心性能,以便当涉及到将来的选择时,您知道哪一个是更好的选择!

代码展示

下面是我在搜索字符串时经常看到的6种不同的方法:

// 1\. includes (introduced in ES6) 
var string = "string to search for substring",
    substring = "sea";
string.includes(substring);

// 2\. RegExp: test
var string = "string to search for substring",
    expr = /sea/;  // no quotes here
expr.test(string);

//3\. string.search
var string = "string to search for substring",
    expr = "/sea/";
string.search(expr);

//4\. lodash: includes
var string = "string to search for substring",
    substring = "sea";
_.includes(string, substring);

// 5\. string.match
var string = "string to search for substring",
    expr = "/sea/";
string.match(expr);

// 3\. string.indexOf
var string = "string to search for substring",
    substring = "sea";
string.indexOf(substring) !== -1;

性能基准测试

  1. 如果你想知道,给出一个一般长度的字符串,哪个会表现得更好,regex.test是最快的,其次是string.search(libraries by ES6),第三位属于string.indexof方法:

基准测试① 前往测试页面 →

  1. 如果放大测试字符串的规模会怎么样?

我缩放这个字符串,把它放大1000倍(100万字符,甚至1000万字符),我看到string.indexof是一个赢家,虽然不是很多! 下面这是我的基准测试的结果,我创建了1~1000万个字符的字符串来进行测试 基准测试非常大的字符串,并重复子字符串1000次: 基准测试② 前往测试页面 → 译者注:这个链接提供的测试内容感觉跟作者描述的测试内容不符,可能链接是错的

[转载]原文链接:https://segmentfault.com/a/1190000019778146

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处。

转载请注明:文章转载自 JavaScript中文网 [https://www.javascriptcn.com]

本文地址:https://www.javascriptcn.com/read-69915.html

文章标题:Javascript里面最常用的6种查找字符串的方式——以及它们的性能测试

相关文章
一些前端学习中好的书籍,整理
一、Javascript方面的书籍: 1 JavaScript权威指南(第6版):号称javascript圣经,前端必备;前端程序员学习核心JavaScript语言和由Web浏览器定义的JavaScript API的指南和综合参考手册; 2...
2015-11-12
html5+JavaScript教程-微信打飞机小游戏源码
js // JavaScript Document var c = document.getElementById("dotu"); var cxt = c.getContext("2d&q...
2015-11-12
JavaScript编辑器推荐
主流编辑器有SublimeText,Notepad++,webstorm等,是使用最广泛的编辑器,但也有一些JavaScript编辑器提供有着各自的特性和功能,适应不同人的需求,以下是几款优秀的编辑器,相信你一定能找到自己喜欢的。 1. W...
2015-11-12
js性能优化 如何更快速加载你的JavaScript页面
确保代码尽量简洁 不要什么都依赖JavaScript。不要编写重复性的脚本。要把JavaScript当作糖果工具,只是起到美化作用。别给你的网站添加大量的JavaScript代码。只有必要的时候用一下。只有确实能改善用户体验的时候用一下。 ...
2015-11-12
10个强大的纯CSS3动画案例分享
我们的网页外观主要由CSS控制,编写CSS代码可以任意改变我们的网页布局以及网页内容的样式。CSS3的出现,更是可以让网页增添了不少动画元素,让我们的网页变得更加生动有趣,并且更易于交互。本文分享了10个非常炫酷的CSS3动画案例,希望大家...
2015-11-16
2015年JavaScript或“亲库而远框架”
2014年过去了,作为一个JavaScript开发者很难满怀信心的去“挽回”一个特定的库或技术,即便是强大的Angular,似乎也因为最近的一些事情而动摇。 2014年10月的ng-europe会议上,Angular开发者团队透露了一个关于...
2015-11-12
v-charts | 饿了么团队开源的基于 Vue 和 ECharts 的图表工具
在使用echarts生成图表时,经常需要做繁琐的数据类型转化、修改复杂的配置项,v-charts的出现正是为了解决这个 痛点。基于Vue2.0和echarts封装的v-charts图表组件,只需要统一提供一种对前后端都友好的数据格式 设置简...
2018-05-24
JavaScript实现PC手机端和嵌入式滑动拼图验证码三种效果
PC和手机端网站滑动拼图验证码效果源码,同时包涵了弹出式Demo,使用ajax形式提交二次验证码所需的验证结果值,嵌入式Demo,使用表单形式提交二次验证所需的验证结果值,移动端手动实现弹出式Demo三种效果 首先要确认前端使用页面,比如...
2017-03-17
JavaScript常用特效chm下载
下载地址:JavaScript常用特效chm下载 对了,如果打开空白,在手册上右键属性解除锁定即可。 ...
2015-11-12
从2014年的发展来展望JS的未来将会如何
<font face="寰�杞�闆呴粦, Arial, sans-serif ">2014骞达紝杞�浠惰�屼笟鍙戝睍杩呴€燂紝鍚勭�嶈��瑷€灞傚嚭涓嶇┓锛屼互婊¤冻鐢ㄦ埛涓嶆柇鍙樺寲鐨勯渶姹傘€傝繖浜涜��...
2015-11-12
回到顶部