在Javascript中,在`localeCompare`中使用`==`和反之亦然?

时间:2015-01-21 10:27:34

标签: javascript string

相互比较时,每个人的利弊是什么? 在Javascript中应该==使用localeCompare并且反之亦然?

4 个答案:

答案 0 :(得分:2)

它们完全没有相同!

非严格比较比较字符串以查看它们是否相同(仅包括字符串,localeCompare工作的字符串,类型无关紧要。)

"test" == "test" // true

localCompare远不止于此,它返回一个数字,指示引用字符串是在排序顺序之前还是之后出现,或者与给定字符串相同,并且使用指定的语言。

'a'.localeCompare('c') // returns a negative value, i.e. -1 etc, a comes before c
'a'.localeCompare('a') // returns 0, they are the same
'c'.localeCompare('a') // returns a positinve value, i.e. 1 etc, c comes after a

请注意,使用的排序顺序完全取决于实现,但在大多数浏览器中,它将按字母顺序排列

或特定语言

'ä'.localeCompare('z', 'sv')); // a positive value: in Swedish, ä sorts after z

当它返回一个负整数,零或一个正整数时,它在诸如sort()之类的函数中很有用,这些函数期望排序回调的返回仅为负整数,零或正整数。

MDN

答案 1 :(得分:1)

localeCompare==不同。使用==比较两个变量时,检查变量是否具有相同的内容。这将返回一个布尔值(true / false)。但是,localeCompare不会返回布尔值而是返回int。

当两个变量相同时,您会收到0,但如果您的变量不相同,则会收到1-1。该值基于第一个变量是按排序顺序排在第二个变量之前还是之后。

所以当我纯粹验证两个变量是否相同时,我自己会使用==,但当你想要查看排序顺序中的变量时,localeCompare会变得很方便,但是可以用于比较两个变量,看它们是否相同。

string a = "hello";
string b = "world";

a == b // returns false
a.localeCompare(b); // returns -1

要稍微回答您的问题,这些是使用以下任一示例的特征/原则和缺点:

使用==

  • 返回布尔值而不是字符串/整数/...
  • 大多数人都更容易阅读

使用localeCompare

  • 返回一个整数(-1,0或+1)
  • 可用于对变量进行排序

答案 2 :(得分:1)

localeCompare并不只是检查价值是否相等。它还会比较它们不同时的值,并根据哪个值更高返回1 / -1。它的返回值绝不等同于等式检查。

localeCompare可用于排序字符串,因为当2个值不相同时,返回值与==不同,==只能 < / em>用于确定相等性(值,而不是类型)。

例如:

"2".localeCompare(2) // 0
"2".localeCompare(1) // 1
"2".localeCompare(3) // -1

"2" == 2 // true
"2" == 1 // false
"2" == 3 // false

"b".localeCompare("b") // 0
"b".localeCompare("a") // 1
"b".localeCompare("c") // -1

"b" == "b" // true
"b" == "a" // false
"b" == "c" // false

localeCompare的返回值恰好是Array.prototype.sort()期望从其处理程序返回的内容。

答案 3 :(得分:1)

localeCompare对于实现排序(升序或降序)功能非常有用:

myLabelsArray.sort(function(a, b){
    return a.label.localeCompare(b.label);
});

确实,localeCompare会返回-10(如果等于)或1(基于区域设置语言规则),允许进行排序。

使用== + <实现它需要更多行,显式返回整数。