javascript `localeCompare` 返回不同的值

Mad*_*dhu 2 javascript arrays sorting string native

我现在正在javascript string使用排序localeCompare,我的数据也将包含几个null值。

localeCompare在比较stringnull价值时发现了一个奇怪的行为。当比较字符串值与startswith时,a/A to n/N它工作正常,如下所示。

"n".localeCompare(null) // return -1;
"N".localeCompare(null) // return -1;
Run Code Online (Sandbox Code Playgroud)

但是如果我将空值与其o/O to z/Z返回进行比较之后1

"o".localeCompare(null) // return 1;
"O".localeCompare(null) // return 1;
Run Code Online (Sandbox Code Playgroud)

我知道可以localeCompare进行比较Unicode,但是为什么会发生上述行为有什么原因吗?

ade*_*neo 5

localeCompare比较字符串,因此传递给它的任何内容都将转换为字符串,并且您将得到相同的结果

"n".localeCompare("null") // return -1;
"o".localeCompare("null") // return 1;
Run Code Online (Sandbox Code Playgroud)

因为

localeCompare() 方法返回一个数字,指示引用 字符串在排序顺序中是位于给定字符串之前还是之后,或者是否与给定字符串相同。

MDN

意思是

"null".localeCompare("null")-> 将返回,0因为它是相同的字符串
"n".localeCompare("null")-> 将返回-1它之前的内容null "o".localeCompare("null")-> 将返回1它之后的内容null