localeCompare pomáhá porovnávat řetězce rozumným způsobem

Rodney Rehm nedávno tweetoval o této funkci, o které jsem nikdy neslyšel – String.prototype.localCompare . A wow – to může být tak užitečné.

  • Chtěli jste vědět, zda řetězec obsahuje danou sekvenci znaků bez ohledu na to, zda jsou velká nebo malá písmena?
  • Narazili jste někdy na problém, že když chcete porovnat řetězce obsahující číselné hodnoty, obvykle to není tak snadné?
'aBcD' === 'abcd' // false
'ábcd' === 'abcd' // false

'Price 2€'  > 'Price 1€'  // true
'Price 20€' > 'Price 3€' // false

Pomocí localCompare zde můžete definovat několik možností, které vám mohou pomoci. Podle MDN vrací následující hodnotu:

Pojďme se tedy podívat

'aBcD'.localeCompare('abcd', undefined, { sensitivity: 'base' }) // 0 -> equal
'ábcd'.localeCompare('abcd', undefined, { sensitivity: 'base' }) // 0 -> equal

'Price 20€'.localeCompare('Price 3€', undefined, { numeric: true })  // 1
'Price 20€'.localeCompare('Price 3€', undefined, { numeric: false }) // -1

To vám může pomoci zjistit, zda mají řetězce stejný základ, aniž byste si museli pohrávat s hodnotami číselného kódu a musíte uznat, že numeric možnost je opravdu skvělá!!!