String.prototype.localeCompare()

This translation is incomplete. Please help translate this article from English

El método localeCompare() devuelve un número que indica si la cadena de caracteres actual es anterior, posterior o igual a la cadena pasada como parámetro, en orden lexicográfico.

Los nuevos argumentos locales y options permiten a las aplicaciones especificar el idioma y el orden de clasificación que debe usarse y personalizar el comportamiento de la función. En las implementaciones más antiguas, que ignoran los argumentos locales y options, la configuración locale y el orden de clasificación utilizados dependen enteramente de la implementación

Sintaxis

referenceStr.localeCompare(compareString[, locales[, options]])

Parámetros

Comprueba la sección Compatibilidad con el navegador para ver que navegadores soportan los argumentos locales y options, and the Checking for support for locales and options arguments for feature detection.

compareString
La cadena con la que queremos comparar la cadena actual de caracteres.

Valor devuelto

Un número negativo si la cadena de referencia ocurre antes de la cadena de comparación; positivo si la cadena de referencia ocurre después de la cadena de comparación; 0 si son equivalentes.

Descripción

Returns an integer indicating whether the referenceStr comes before, after or is equivalent to the compareStr.

  • Negative when the referenceStr occurs before compareStr
  • Positive when the referenceStr occurs after compareStr
  • Returns 0 if they are equivalent

NO CONFIAR en que los valores devueltos sean siempre -1 o 1. Los resultados de enteros negativos y positivos varían entre los navegadores (así como entre diferentes versiones de un mismo navegador) porque la especificación W3C solo exige valores negativos y positivos. Algunos navegadores pueden devolver -2 o 2 o incluso algún otro valor negativo o positivo.

Ejemplos

Uso de localeCompare()

// La letra "a" es anterior a la "c" produciendo un valor negativo
'a'.localeCompare('c'); // -2 o -1 (u otro valor negativo)

// Alfabeticamente la palabra "check" viene después de "against" produciendo un valor ppositivo
'check'.localeCompare('against'); // 2 o 1 (u otro valor positivo)

// "a" y "a" son equivalentes produciendo un valor neutro de 0
'a'.localeCompare('a'); // 0

Ordenar un array

localeCompare enables a case-insensitive sort of an array.

var items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu'];
items.sort((a, b) => a.localeCompare(b)); // ['adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé']

Verificar si el navegador soporta argumentos extendidos

The locales and options arguments are not supported in all browsers yet. To check whether an implementation supports them, use the "i" argument (a requirement that illegal language tags are rejected) and look for a RangeError exception:

function localeCompareSupportsLocales() {
  try {
    'foo'.localeCompare('bar', 'i');
  } catch (e) {
    return e.name === 'RangeError';
  }
  return false;
}

Uso de locales

The results provided by localeCompare() vary between languages. In order to get the sort order of the language used in the user interface of your application, make sure to specify that language (and possibly some fallback languages) using the locales argument:

console.log('ä'.localeCompare('z', 'de')); // a negative value: in German, ä sorts before z
console.log('ä'.localeCompare('z', 'sv')); // a positive value: in Swedish, ä sorts after z

Uso de options

The results provided by localeCompare() can be customized using the options argument:

// in German, ä has a as the base letter
console.log('ä'.localeCompare('a', 'de', { sensitivity: 'base' })); // 0

// in Swedish, ä and a are separate base letters
console.log('ä'.localeCompare('a', 'sv', { sensitivity: 'base' })); // a positive value

Performance

When comparing large numbers of strings, such as in sorting large arrays, it is better to create an Intl.Collator object and use the function provided by its compare property.

Especificaciones

Especificación Estado Comentario
ECMAScript 3rd Edition (ECMA-262) Standard Definición inicial. Implementado en JavaScript 1.2.
ECMAScript 5.1 (ECMA-262)
La definición de 'String.prototype.localeCompare' en esta especificación.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
La definición de 'String.prototype.localeCompare' en esta especificación.
Standard  
ECMAScript (ECMA-262)
La definición de 'String.prototype.localeCompare' en esta especificación.
Living Standard  
ECMAScript Internationalization API 1.0 (ECMA-402)
La definición de 'String.prototype.localeCompare' en esta especificación.
Standard Definiciones de los parámetros locale y option.
ECMAScript Internationalization API 2.0 (ECMA-402)
La definición de 'String.prototype.localeCompare' en esta especificación.
Standard  
ECMAScript Internationalization API (ECMA-402)
La definición de 'String.prototype.localeCompare' en esta especificación.
Living Standard  

Compatibilidad con el navegador

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome para AndroidFirefox para AndroidOpera para AndroidSafari en iOSSamsung InternetNode.js
localeCompareChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 5.5Opera Soporte completo 7Safari Soporte completo 3WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
localesChrome Soporte completo 24Edge Soporte completo 12Firefox Soporte completo 29IE Soporte completo 11Opera Soporte completo 15Safari Soporte completo 10WebView Android Sin soporte NoChrome Android Soporte completo 26Firefox Android Sin soporte NoOpera Android Sin soporte NoSafari iOS Soporte completo 10Samsung Internet Android Soporte completo 1.5nodejs Soporte completo 13.0.0
Soporte completo 13.0.0
Soporte parcial 0.12
Notas
Notas Before version 13.0.0, only the locale data for en-US is available by default. When other locales are specified, the function silently falls back to en-US. To make full ICU (locale) data available for versions prior to 13, see Node.js documentation on the --with-intl option and how to provide the data.
optionsChrome Soporte completo 24Edge Soporte completo 12Firefox Soporte completo 29IE Soporte completo 11Opera Soporte completo 15Safari Soporte completo 10WebView Android Sin soporte NoChrome Android Soporte completo 26Firefox Android Sin soporte NoOpera Android Sin soporte NoSafari iOS Soporte completo 10Samsung Internet Android Soporte completo 1.5nodejs Soporte completo 0.12

Leyenda

Soporte completo  
Soporte completo
Sin soporte  
Sin soporte
Ver notas de implementación.
Ver notas de implementación.

Ver también