Comparar strings

El método localeCompare(cadena) permite comparar el string con el texto que se le pase como argumento, en el contexto de configuración de idioma del browser, de ahi el término locale.

Este método puede devolver uno de tres valores numéricos posibles en función de la ordenación alfabética. Se compara el argumento con el string que hace uso del me´todo

  • -1 la cadena argumento es posterior al string
  • 0 la cadena argumento es igual al string
  • +1 la cadena argumento es anterior al string

En un ejemplo puedes ver como funciona

var nombre1 = "Pedro";

var nombre2 = "Ana";

console.log( nombre1.localeCompare(nombre2))   //1

El resultado 1 indica que nombre2 (Ana) es anterior a nombre1 (Pedro), como es de esperar en una ordenación alfabética primero va Ana y luego Pedro.

var nombre1 = "Pedro";

var nombre2 = "Ana";

console.log( nombre2.localeCompare(nombre1))   //-1

Ahora hacemos la comparación al revés y el resultado es -1, es decir, que la referencia Pedro es posterior a la cadena con la que se compara, Ana

var nombre1 = "Pedro";

var nombre2 = "Pedro";

console.log( nombre1.localeCompare(nombre2))  //0

En este caso está claro que el resultado es 0 pues ambos son iguales. Observa que son iguales significa que tiene los mismo caracteres, en el mismo caso (mayúsuculas o minúsculas) y con la misma longitud, si hubieran espacios en uno de los nombres no serían idénticos.

Un uso inmediato de este método lo puedes observar al ordenar una lista de nombres. Esta lista se implementa como un array y se ordena con el método sort.

var lista = ["Pedro", "Ana","Luis","Marisa"];

var ordenar = function(a, b){ return a.localeCompare(b)}

lista.sort(ordenar)

console.log(lista)

Obtendríamos la lista ordenada alfabéticamente, de menor a mayor.