我试图比较字符串以进行排序,我想在下划线之前对句点进行排序(因为它在ASCII表之后)。有关localeCompare为什么不这样做的任何建议/解释?
作为一个例子,我希望tester.java来到tester_1.java
之前" apple" .localeCompare(" tomatoe")返回-1,因为苹果较小 " tester.java" .localeCompare(" tester_1.java")当我希望它返回-1时返回1
答案 0 :(得分:0)
我认为你的意思是.localeCompare()
正确(这在你的问题中被误解了)?那么你的订单是以哪种方式完成的?你可能有错误的方法:
var array = [ "_a", ".b" ]
array.sort() // returns [ ".b", "_a" ]
array.sort(function(a,b) { return a.localeCompare(b) }) // returns [ ".b", "_a" ]
array.sort(function(a,b) { return b.localeCompare(a) }) // returns [ "_a", ".b" ]
看看引擎盖下:
var str1 = "_a",
str2 = ".b";
str1.localeCompare(str2) // 49
str2.localeCompare(str1) // -49
因此,如果您正在以错误的顺序进行比较,那么它就是“逆转”
var array = [ ".c", "_a", ".b" ]
array.sort(function(a,b) { return a.localeCompare(b) }) // [ ".b", ".c", "_a" ]
array.sort(function(a,b) { return b.localeCompare(a) }) // [ "_a", ".c", ".b" ]