599 Stimmen

Wie kehrt man in JavaScript eine Zeichenkette an Ort und Stelle um?

Wie kehrt man eine Zeichenkette in JavaScript an Ort und Stelle um, wenn sie an eine Funktion mit einer Rückgabeanweisung übergeben wird, ohne integrierte Funktionen zu verwenden ( .reverse() , .charAt() usw.)?

0 Stimmen

Sie dürfen also nicht .charAt() verwenden, um die Zeichen der Zeichenkette zu erhalten?

192 Stimmen

Das können Sie nicht. JavaScript-Zeichenfolgen sind unveränderlich, was bedeutet, dass der Speicher, der ihnen zugewiesen ist, nicht beschrieben werden kann, was echte "In-Place"-Umkehrungen unmöglich macht.

3 Stimmen

Re: crescentfresh's Kommentar siehe stackoverflow.com/questions/51185/

14voto

Maher Hossain Punkte 192

Es gibt mehrere Möglichkeiten, dies zu tun, Sie können die folgenden prüfen,

1. Traditionelle for-Schleife (inkrementierend):

function reverseString(str){
        let stringRev ="";
        for(let i= 0; i<str.length; i++){
            stringRev = str[i]+stringRev;
        }
        return stringRev;
}
alert(reverseString("Hello World!"));

2. Traditionelle for-Schleife (dekrementierend):

function reverseString(str){
    let revstr = "";
    for(let i = str.length-1; i>=0; i--){
        revstr = revstr+ str[i];
    }
    return revstr;
}
alert(reverseString("Hello World!"));

3. Verwendung der for-of-Schleife

function reverseString(str){
    let strn ="";
    for(let char of str){
        strn = char + strn;
    }
    return strn;
}
alert(reverseString("Get well soon"));

4. Verwendung der Methode forEach/ Array hoher Ordnung:

function reverseString(str){

  let revSrring = "";
  str.split("").forEach(function(char){

    revSrring = char + revSrring;

  });
  return revSrring;
}
alert(reverseString("Learning JavaScript"));

5. ES6-Standard:

function reverseString(str){

  let revSrring = "";
  str.split("").forEach(char => revSrring = char + revSrring);
  return revSrring;
}
alert(reverseString("Learning JavaScript"));

6. Der neueste Weg:

function reverseString(str){

  return str.split("").reduce(function(revString, char){
       return char + revString;
  }, "");

}

alert(reverseString("Learning JavaScript"));

7. Sie können das Ergebnis auch wie folgt erhalten,

function reverseString(str){

  return str.split("").reduce((revString, char)=> char + revString, "");

}
alert(reverseString("Learning JavaScript"));

11voto

Alex Hawkins Punkte 606

Während eines Vorstellungsgesprächs wurde ich gebeten, eine Zeichenkette umzukehren, ohne irgendwelche Variablen oder nativen Methoden zu verwenden. Dies ist meine Lieblingsimplementierung:

function reverseString(str) {
    return str === '' ? '' : reverseString(str.slice(1)) + str[0];
}

8voto

In ES6 haben Sie eine weitere Option

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

reverseString('Hello');

6voto

Fatih Acet Punkte 27007

Das ist meiner Meinung nach der einfachste Weg

var reverse = function(str) {
    var arr = [];

    for (var i = 0, len = str.length; i <= len; i++) {
        arr.push(str.charAt(len - i))
    }

    return arr.join('');
}

console.log(reverse('I want a '));

6voto

jitendra rajput Punkte 586

Wenn Sie keine der eingebauten Funktionen verwenden möchten. Versuchen Sie dies

var string = 'abcdefg';
var newstring = '';

for(let i = 0; i < string.length; i++){
    newstring = string[i] += newstring;
}

console.log(newstring);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X