首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较字符串与localeCompare与===?

比较字符串与localeCompare与===?
EN

Stack Overflow用户
提问于 2015-11-03 00:04:58
回答 1查看 14.3K关注 0票数 16

我最近的JS项目遇到了一个很奇怪的问题。我通常使用===比较字符串,但是当比较两个不同对象的字符串属性时,我得到了false,尽管它们是完全相同的字符串。我通过以下操作在我的Node.js解释器中测试了这一点:

代码语言:javascript
复制
> x = {str: 'hello'}
{ str: 'hello' }
> y = {str: 'hello'}
{ str: 'hello' }
> y.str === x.str
true

因此,我无法理解为什么我的代码不起作用。但是,当我从使用===切换到str1.localeCompare热潮时,它就能工作了。这两者有什么区别?

EN

回答 1

Stack Overflow用户

发布于 2015-11-03 00:09:49

===在字符串中查找完全相同的字节。

.localeCompare()允许这样一个事实,即您可能想忽略字符串中的某些差异(例如,穿孔、纵横或大小写),并且仍然允许它们比较相同的字符串,或者在决定哪个字符串在另一个字符串之前时,您希望忽略某些差异。并且,它提供了许多选项来控制哪些比较特性是使用的或不使用的。

如果您阅读了MDN文档 for string.prototype.localeCompare(),您可以看到大量的选项,您可以传入这些选项来控制比较的工作方式。在一个普通的ascii字符串中,没有相同的特殊字符,您不太可能看到区别,但是开始进入diacriticals或case问题,localCompare()有更多的特性和更多的选项来控制比较。

可用于控制比较的一些选项如下:

  1. 数字校对
  2. 判读灵敏度
  3. 忽略标点符号的能力
  4. 案例优先
  5. 控制大写还是小写先比较

此外,localeCompare()返回一个与.sort()回调完全对齐的值(负值、0值或正值)。

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33489250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档