相互比较时,每个人的利弊是什么?
在Javascript中应该==
使用localeCompare
并且反之亦然?
答案 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()
之类的函数中很有用,这些函数期望排序回调的返回仅为负整数,零或正整数。
答案 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
答案 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
会返回-1
,0
(如果等于)或1
(基于区域设置语言规则),允许进行排序。
使用==
+ <
实现它需要更多行,显式返回整数。