gpt4 book ai didi

javascript - 使用 localeCompare 与 === 比较字符串?

转载 作者:数据小太阳 更新时间:2023-10-29 04:29:51 24 4
gpt4 key购买 nike

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

> x = {str: 'hello'}
{ str: 'hello' }
> y = {str: 'hello'}
{ str: 'hello' }
> y.str === x.str
true

所以我无法弄清楚为什么我的代码无法正常工作。但是当我从使用 === 切换到 str1.localeCompare BOOM 时,它起作用了。两者有什么区别?

最佳答案

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

.localeCompare() 考虑到您可能希望忽略字符串中的某些差异(例如标点符号或变音符号或大小写)并且仍然允许它们比较相同或您想要在决定哪个字符串在另一个之前时忽略某些差异。而且,它提供了许多选项来控制使用或不使用哪些比较功能。

如果您阅读 MDN documentation对于 string.prototype.localeCompare(),您可以看到一大堆选项,您可以传入这些选项来控制比较的工作方式。在一个没有特殊字符且大小写相同的普通 ascii 字符串上,您不太可能看到差异,但开始遇到变音符号或大小写问题,localCompare() 具有更多功能和更多选项来控制比较。

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

  1. 数字整理
  2. 变音敏感度
  3. 忽略标点符号的能力
  4. 案例优先
  5. 控制大小写先比较

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

关于javascript - 使用 localeCompare 与 === 比较字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33489250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com