51 votes

Inverser une chaîne en JavaScript

J'essaie d'inverser une chaîne d'entrée

 var oneway = $('#inputfield').val();
var backway = oneway.reverse();
 

mais firebug me dit que oneway.reverse() n'est pas une fonction. Des idées?

Je vous remercie

115voto

Ates Goral Points 47670

reverse() est une méthode d'instances de tableaux. Cela ne fonctionnera pas directement sur une chaîne. Vous devez d’abord scinder les caractères de la chaîne en un tableau, inverser le tableau, puis rejoindre une chaîne:

 var backway = oneway.split("").reverse().join("");
 

75voto

Mathias Bynens Points 41065

La technique suivante (ou similaire) est couramment utilisée pour inverser une chaîne en JavaScript:

 // Don't use this!
var naiveReverse = function(string) {
    return string.split('').reverse().join('');
}
 

En fait, toutes les réponses affichées à ce jour sont une variation de ce schéma. Cependant, cette solution pose quelques problèmes. Par exemple:

 naiveReverse('foo  

8voto

Brian Campbell Points 101107
 String.prototype.reverse = function () {
    return this.split("").reverse().join("");
}
 

Inspiré par le premier résultat que j'ai obtenu lorsque j'ai fait un reverse Google pour javascript .

4voto

Mr. X Points 1

Google plus fort, bros. Ceci est par Edd Mann.

 function reverse (s) {
for (var i = s.length - 1, o = ''; i >= 0; o += s[i--]) { }
return o;
}
 

http://eddmann.com/posts/ten-ways-to-reverse-a-string-in-javascript/

http://jsperf.com/string-reverse-function-performance

3voto

kennebec Points 33886
// You could reverse a string without creating an array

String.prototype.reverse= function(){
 var s= '', L= this.length;
 while(L){
  s+= this[--L];
 }
 return s;
}

var s1= 'the time has come, the walrus said, to speak of many things';
s1.reverse()
/*returned value: (String)
sgniht ynam fo kaeps ot, dias surlaw eht, emoc sah emit eht
*/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X