JS:创建从索引0开始的所有子字符串的最快方法
JS: Fastest way to create all substrings starting at index 0
因此,我正在寻找一种方法,从索引0开始的较大字符串中生成所有可能的子字符串。假设我们有
var a = "test";
然后我想生成
"test", "tes", "te" and "t"
我想象用子串、子串或切片来做这件事,我在这里测试了它们:http://jsperf.com/loop-over-string
现在,slice方法的速度几乎是其他方法的两倍。有人能解释一下吗?或者有更快的方法可以做到这一点吗?
在基准测试中,slice
更快,因为text
的长度每次迭代都会减少。
如果您查看V8中的substr
、substring
和slice
实现,您会发现它们使用相同的内部函数%_SubString
。他们只是以微不足道的成本操纵其参数。
String.prototype.slice
:https://github.com/v8/v8/blob/master/src/string.js#L567String.prototype.substring
:https://github.com/v8/v8/blob/master/src/string.js#L713String.prototype.substr
:https://github.com/v8/v8/blob/master/src/string.js#L748
这似乎更快:
substr = ""
for (var i = 0; i < length; i++) {
substr += text.charAt(i)
}
http://jsperf.com/loop-over-string/3
相关文章:
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 在JavaScript中拆分日期字符串的更好方法是什么
- 用Javascript重新格式化复杂文本日期字符串的更好方法
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- jQuery字符串使用split()方法在空格后拆分字符串
- 使用查询字符串方法清除浏览器缓存
- 使用子字符串方法时应用程序挂起的原因
- 使用字符串方法更改Javascript对象中的DOM元素参数
- 在Javascript中对对象属性执行字符串方法
- 直接访问字符串方法
- 尝试我自己的字符串方法来删除元音
- 对字符串方法的ajax调用不起作用
- 字符串方法精确文本
- 如何在字符串原型扩展方法中使用字符串方法
- 有没有任何字符串方法,能让我把一串数字,转换成一串数字和字母
- 字符串方法
- 在定义新的字符串方法时使用reduce()
- 问题与自定义大写字符串方法,jQuery和Select2
- 使用比较字符串方法或使用==验证密码字段,但两者都不起作用
- 如何防止javascript缓存?查询字符串方法不起作用