JavaScript Chaîne inverse


Exemple

Le moyen le plus "populaire" d'inverser une chaîne en JavaScript est le fragment de code suivant, qui est assez courant:

function reverseString(str) {
    return str.split('').reverse().join('');
}

reverseString('string');    // "gnirts"

Cependant, cela ne fonctionnera que tant que la chaîne en cours d'inversion ne contient pas de paires de substitution. Les symboles astraux, c'est-à-dire les caractères extérieurs au plan multilingue de base, peuvent être représentés par deux unités de code et conduiront à cette technique naïve pour produire des résultats erronés. De plus, les caractères avec des marques combinées (par exemple, diaérèse) apparaîtront sur le caractère logique "suivant" au lieu de l'original avec lequel il a été combiné.

'𝌆■.'.split('').reverse().join(''); //fails

Bien que la méthode fonctionne correctement pour la plupart des langages, un algorithme vraiment précis et respectueux de l'encodage pour l'inversion des chaînes est légèrement plus complexe. Une de ces implémentations est une minuscule bibliothèque appelée Esrever , qui utilise des expressions régulières pour associer des marques de combinaison et des paires de substitution afin d'effectuer parfaitement l'inversion.

Explication

Section Explication Résultat
str La chaîne d'entrée "string"
String.prototype.split( deliminator ) Divise la chaîne str en un tableau. Le paramètre "" signifie la division entre chaque caractère. ["s","t","r","i","n","g"]
Array.prototype.reverse() Renvoie le tableau de la chaîne fractionnée avec ses éléments dans l'ordre inverse. ["g","n","i","r","t","s"]
Array.prototype.join( deliminator ) Joint les éléments du tableau en une chaîne. Le paramètre "" signifie un déliminateur vide (c.-à-d. Que les éléments du tableau sont placés l'un à côté de l'autre). "gnirts"

En utilisant un opérateur de spread

6
function reverseString(str) {
    return [...String(str)].reverse().join('');    
}

console.log(reverseString('stackoverflow'));  // "wolfrevokcats"
console.log(reverseString(1337));             // "7331"
console.log(reverseString([1, 2, 3]));        // "3,2,1"

Fonction reverse() personnalisée

function reverse(string) {
    var strRev = "";
    for (var i = string.length - 1; i >= 0; i--) {
        strRev += string[i];
    }
    return strRev; 
}

reverse("zebra");  // "arbez"