在 JavaScript 中测试两个字符串是不是完全匹配的最快方法

Posted

技术标签:

【中文标题】在 JavaScript 中测试两个字符串是不是完全匹配的最快方法【英文标题】:Fastest way to test two strings for exact match in JavaScript在 JavaScript 中测试两个字符串是否完全匹配的最快方法 【发布时间】:2013-09-06 10:38:06 【问题描述】:

我想比较 JavaScript 中的两个字符串,以测试它们是否完全相同。 哪种方法是最好(最快)的?

现在,我正在考虑中的任何一个

if(string1.localeCompare(string2) == 0) 

或者干脆

if(string1 == string2)

有没有更好的方法来做到这一点?

【问题讨论】:

【参考方案1】:

如果您想检查它们是否完全相同,我可能会使用strict equality,即它们也是相同的类型,以防万一。

if (string1 === string2)

【讨论】:

【参考方案2】:

检查this fiddle* 并找出自己哪个更快。

*如果链接将来失效:== > === > String.localeCompare(在 Chrome 上测试)。

【讨论】:

但是,正如答案和评论中所述,== 甚至不满足检查完全匹配的要求,至少在不知情的情况下不满足。 @IngoBürk 是的,我知道。但是对于不需要严格比较的情况, == 仍然更快。这只是一个信息,我展示了速度,选择方法只取决于你:) 正是我所需要的。 @IngoBürk,虽然您严格正确,但我认为确切的含义是高度上下文相关的。【参考方案3】:

我不确定if(string1 == string2) 是否还有优化空间。这是最好的方法。

【讨论】:

除非你已经知道它们是字符串,否则使用=== 是必不可少的。【参考方案4】:
if (typeof string1=="string" && typeof string2=="string" && string1 === string2)

没有转义方法:)

【讨论】:

我喜欢这个想法,但你可以省略第二个typeof

以上是关于在 JavaScript 中测试两个字符串是不是完全匹配的最快方法的主要内容,如果未能解决你的问题,请参考以下文章

测试字符串是不是不等于两个字符串中的任何一个

类似于 dojo DOH 的 Javascript 测试框架

代码背后的逻辑确定两个 javascript 字符串是不是是字谜

判断两个数组是不是相等

javascript 判断字符串是不是在一个数组中

javascript怎么判断字符串是不是相等