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.)?
Antworten
Zu viele Anzeigen?Nachfolgend finden Sie die vier gängigsten Methoden, mit denen Sie eine Umkehrung der Zeichenfolge erreichen können
Bei einer Zeichenkette wird eine neue Zeichenkette mit dem umgekehrten Reihenfolge der Zeichen
Mehrere Lösungen für das Problem
//reverse('apple') === 'leppa'
//reverse('hello') === 'olleh'
//reverse('Greetings!') === '!sgniteerG'
// 1. First method without using reverse function and negative for loop
function reverseFirst(str) {
if(str !== '' || str !==undefined || str !== null) {
const reversedStr = [];
for(var i=str.length; i>-1; i--) {
reversedStr.push(str[i]);
}
return reversedStr.join("").toString();
}
}
// 2. Second method using the reverse function
function reverseSecond(str) {
return str.split('').reverse().join('');
}
// 3. Third method using the positive for loop
function reverseThird(str){
const reversedStr = [];
for(i=0; i<str.length;i++) {
reversedStr.push(str[str.length-1-i])
}
return reversedStr.join('').toString();
}
// 4. using the modified for loop ES6
function reverseForth(str) {
const reversedStr = [];
for(let character of str) {
reversedStr = character + reversedStr;
}
return reversedStr;
}
// 5. Using Reduce function
function reverse(str) {
return str.split('').reduce((reversed, character) => {
return character + reversed;
}, '');
}
GUT, können Sie eine Funktion mit einer einfachen Schleife erstellen, die die Umkehrung der Zeichenkette für Sie durchführt, ohne dass Sie reverse()
, charAt()
und so weiter:
Sie haben zum Beispiel diese Zeichenfolge:
var name = "StackOverflow";
Erstellen Sie eine Funktion wie diese, ich nenne sie reverseString
...
function reverseString(str) {
if(!str.trim() || 'string' !== typeof str) {
return;
}
let l=str.length, s='';
while(l > 0) {
l--;
s+= str[l];
}
return s;
}
Und Sie können es so nennen:
reverseString(name);
Und das Ergebnis wird sein:
"wolfrevOkcatS"
var str = "my name is saurabh ";
var empStr='',finalString='';
var chunk=[];
function reverse(str){
var i,j=0,n=str.length;
for(i=0;i<n;++i){
if(str[i]===' '){
chunk[j]=empStr;
empStr = '';
j++;
}else{
empStr=empStr+str[i];
}
}
for(var z=chunk.length-1;z>=0;z--){
finalString = finalString +' '+ chunk[z];
console.log(finalString);
}
return true;
}
reverse(str);
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/
3 Stimmen
@crescentfresh Sie sollten das als neue Antwort posten.
0 Stimmen
@Irwin, es ist 2015 und charAt() wird immer noch nicht vollständig unterstützt. Wo es unterstützt wird, ist es langsam.
2 Stimmen
Umkehrung einer Zeichenkette auf 3 Arten in Javascript
0 Stimmen
var reverse = (str, rev = '') => str.length == 0 ? console.log(rev) : reverse((str.substr(0,str.length -1)), (rev + str.substr(str.length -1 , 1)));
0 Stimmen
string umkehren in js