JS:从索引0开始创建所有子串的最快方法

时间:2013-12-11 14:20:56

标签: javascript performance substring

所以我正在寻找一种方法来从一个从索引0开始的更大的String生成所有可能的子串。所以让我们说我们有

var a = "test";

然后我要生成

"test", "tes", "te" and "t"

我想用substring,substr或slice做这个,我在这里测试了它们:http://jsperf.com/loop-over-string

现在切片方法几乎两次与其他方法一样快。任何人都可以解释一下吗?或者有更快的方法来做到这一点吗?

2 个答案:

答案 0 :(得分:2)

在您的基准测试slice中更快,因为text的长度会减少每次迭代。

如果您查看V8中的substrsubstringslice实现,您会发现它们使用相同的内部函数%_SubString。他们只能以可忽略的成本操纵其参数。

答案 1 :(得分:1)

这似乎更快:

substr = ""
for (var i = 0; i < length; i++) {
    substr += text.charAt(i)
}

http://jsperf.com/loop-over-string/3

相关问题