Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.
String.prototype.localeCompare()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julio de 2015.
El métodolocaleCompare() retorna un número indicando si una cadena decarateres de referencia va antes, después o si es la misma que la cadena dada enorden alfabético.
In this article
Pruébalo
const a = "réservé"; // With accents, lowercaseconst b = "RESERVE"; // No accents, uppercaseconsole.log(a.localeCompare(b));// Expected output: 1console.log(a.localeCompare(b, "en", { sensitivity: "base" }));// Expected output: 0Los nuevos argumentoslocales yoptions permiten a las aplicacionesespecificar el idioma cuyo orden alfabético se debe usar y configurar elcomportamiento de la función. En implementaciones antiguas, que ignoran losargumentoslocales yoptions, la localización y el orden alfabético usadosson completamente dependientes de la implementación.
Sintaxis
localeCompare(compareString);localeCompare(compareString, locales);localeCompare(compareString, locales, options);Parámetros
compareStringLa cadena de caracteres contra la cual se compara la
referenceStr.localesyoptionsEstos argumentos configuran el comportamiento de la función y le permitena las aplicaciones especificar el idioma cuyas convenciones de formato sedeben usar. En implementaciones que ignoran los argumentos
localesyoptions, la configuración regional usada y la forma de la cadena devuelta soncompletamente dependientes de la implementación.Consulte elconstructor de
Intl.Collator()para obtener detalles sobre estos parámetros y cómo usarlos.
Valor de retorno
Un númeronegativo sireferenceStr ocurre antes decompareString;positivo sireferenceStr ocurre después decompareString;0 si sonequivalentes.
Descripción
Retorna un entero que indica si la cadenareferenceStr va antes, despues o sies equivalente a la cadenacompareString.
- Negativo cuando
referenceStrocurre antes quecompareString. - Positivo cuando
referenceStrocurre después quecompareString. - Retorna
0si son equivalentes.
Alerta: No se debe asumir un valor de retorno exacto de
-1o1.Resultados de enteros positivos y negativos pueden variar entre navegadores(al igual que entre versiones de navegadores) ya que la especificación del W3Csolo requiere valores positivos y negativos. Algunos navegadores podríanretornar
-2o2, o incluso otro valor positivo o negativo.
Rendimiento
Cuando se compara un gran número de cadenas, como cuando se ordenan arreglos degran tamaño, es mejor crear un objetoIntl.Collator y usar la funciónprovista por su propiedadcompare.
Ejemplos
>Uso delocaleCompare()
// La letra "a" va antes que "c" por lo que entrega un valor negativo"a".localeCompare("c"); // -2 o -1 (o cualquier otro valor negativo)// Alfabéticamente la palabra "check" va después que "against" por lo que resulta// en un valor positivo."check".localeCompare("against"); // 2 o 1 (u otro valor positivo)// "a" y "a" son equivalentes por lo que resulta en un valor neutral de cero."a".localeCompare("a"); // 0Ordenar un arreglo
localeCompare() permite ordenar un arreglo independientemente de mayúsculas yminúsculas.
let items = ["réservé", "Premier", "Cliché", "communiqué", "café", "Adieu"];items.sort((a, b) => a.localeCompare(b, "fr", { ignorePunctuation: true }));// ['Adieu', 'café', 'Cliché', 'communiqué', 'Premier', 'réservé']Determinar soporte del navegador para los argumentos extendidos
Los argumentoslocales yoptions no están soportados en todos losnavegadores aún.
Para determinar si una implementación los soporta, usa el argumento"i" (unrequerimiento de que las etiquetas de lenguaje ilegales sean rechazadas) yverifica si se lanza una excepciónRangeError:
function localeCompareSupportsLocales() { try { "foo".localeCompare("bar", "i"); } catch (e) { return e.name === "RangeError"; } return false;}Uso delocales
Los resultados provistos porlocaleCompare() varían por cada lenguaje. Paraobtener el orden del lenguaje usado en la interfaz de usuario de tu aplicación,se debe asegurar de especificar dicho lenguaje (y posiblemente algunos lenguajespor defecto) usando el argumentolocales:
console.log("ä".localeCompare("z", "de")); // un valor negativo: en alemán, ä se ordena antes que zconsole.log("ä".localeCompare("z", "sv")); // un valor positivo: en sueco, ä se ordena después que zUso deoptions
Los resultados provistos porlocaleCompare() se pueden personalizar usando elargumentooptions:
// en alemán, ä tiene a a como letra baseconsole.log("ä".localeCompare("a", "de", { sensitivity: "base" })); // 0// en sueco, ä y a son letras base separadasconsole.log("ä".localeCompare("a", "sv", { sensitivity: "base" })); // un valor positivoOrdenamiento numérico
// por defecto, "2" > "10"console.log("2".localeCompare("10")); // 1// numérico usando options:console.log("2".localeCompare("10", undefined, { numeric: true })); // -1// numérico usando la etiqueta de locales:console.log("2".localeCompare("10", "en-u-kn-true")); // -1Especificaciones
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-string.prototype.localecompare> |
| ECMAScript® 2026 Internationalization API Specification> # sup-String.prototype.localeCompare> |