JavaScript Comparer les chaînes Lexicographiquement


Exemple

Pour comparer les chaînes par ordre alphabétique, utilisez localeCompare() . Cela retourne une valeur négative si la chaîne de référence est lexicographiquement (alphabétiquement) avant la chaîne comparée (le paramètre), une valeur positive si elle vient après et une valeur de 0 si elles sont égales.

var a = "hello";
var b = "world";

console.log(a.localeCompare(b)); // -1

Les opérateurs > et < peuvent également être utilisés pour comparer des chaînes lexicographiquement, mais ils ne peuvent pas renvoyer une valeur de zéro (cela peut être testé avec l'opérateur d'égalité == ). Par conséquent, une forme de la fonction localeCompare() peut être écrite comme localeCompare() :

function strcmp(a, b) {
    if(a === b) {
        return 0;
    }

    if (a > b) {
        return 1;
    }

    return -1;
}

console.log(strcmp("hello", "world")); // -1
console.log(strcmp("hello", "hello")); //  0
console.log(strcmp("world", "hello")); //  1

Cela est particulièrement utile lorsque vous utilisez une fonction de tri qui se base sur le signe de la valeur de retour (par exemple, le sort ).

var arr = ["bananas", "cranberries", "apples"];
arr.sort(function(a, b) {
    return a.localeCompare(b);
});
console.log(arr); // [ "apples", "bananas", "cranberries" ]