string - Why does javascript localeCompare sort underscores before periods? -
i'm trying compare strings sorting purposes, , want sort periods before underscores (because follows ascii table). suggestions / explanations why localecompare doesn't way?
as example, want tester.java come before tester_1.java
"apple".localecompare("tomatoe") returns -1 because apple smaller "tester.java".localecompare("tester_1.java") returns 1 when want return -1
i think mean .localecompare()
right (this mispelled in question)? way ordering being done? possibly have them wrong way around:
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" ]
looking @ under hood:
var str1 = "_a", str2 = ".b"; str1.localecompare(str2) // 49 str2.localecompare(str1) // -49
so if comparing in wrong order "reversed"
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" ]
Comments
Post a Comment