JavaScript Method:localeCompare

Lately I’ve been thinking that since Java has an equalsIgnoreCase method, JavaScript must have something similar. This is what I found: the localeCompare method.

Structure

1
str1.localeCompare(str2, [locales], [options])

Note: The Linux commands also has a locale command!

Available locales

language

'en': English
'fr': French
'de': German
'es': Spanish
'ja': Japanese
'zh': Chinese
'ar': Arabic
'ru': Russian

We can also use a combination of language and region subtags to specify a more specific locale. For example:

'en-US': English (United States)
'fr-CA': French (Canada)
'de-DE': German (Germany)
'es-MX': Spanish (Mexico)
'ja-JP': Japanese (Japan)
'zh-CN': Chinese (China)
'ar-EG': Arabic (Egypt)
'ru-RU': Russian (Russia)

Available options

numeric

1
2
3
4
5
console.log("60".localeCompare("40", undefined, { numeric: true })) // 1

console.log("60".localeCompare("60", undefined, { numeric: true })) // 0

console.log("60".localeCompare("100", undefined, { numeric: true })) // -1

numeric can take one of the two values: true and false

1
console.log("60".localeCompare("100", undefined, { numeric: false })) // 1

With false, both 60 and 100 are treated as normal String objects.

sensitivity

sensitivity can take one of the three values: base, accent, case

1
2
3
4
5
console.log("café".localeCompare("Cafe", undefined, { sensitivity: "base" })) // 0

console.log("café".localeCompare("Cafe", undefined, { sensitivity: "accent" })) // 1

console.log("café".localeCompare("Cafe", undefined, { sensitivity: "case" })) // -1

caseFirst

The caseFirst option in the localeCompare() method specifies whether uppercase letters should come before or after lowercase letters in the sort order. It can take one of the following two values:

upper: Sort uppercase letters before lowercase letters.

lower: Sort lowercase letters before uppercase letters.

1
2
3
4
5
console.log("Ba".localeCompare("AB", undefined, { sensitivity: "case" })) // 1

console.log("aB".localeCompare("AB", undefined, { sensitivity: "case" })) // -1

console.log("aB".localeCompare("AB", undefined, { sensitivity: "case", caseFirst: "upper" })) // 1

ignorePunctuation

The ignorePunctuation option in the localeCompare() method specifies whether punctuation and other symbols should be ignored during the comparison.

It can take one of the following two values: true and false

1
console.log("Hello, world!".localeCompare("Hello world", undefined, { ignorePunctuation: true })) // 0