2017-03-16 1 views
0

Ich konnte nicht herausfinden, warum, wenn ich diesen Code in Replit ausführen, gibt es einen zusätzlichen Abstand zwischen der Antwort und undefined. Das '\ n' muss da sein, damit es so formatiert wird, wie es ist, aber kann jemand erklären, wie man den Raum loswird? Schätze jede Hilfe.Warum gibt es einen zusätzlichen Platz in der Ausgabe dieser Funktion?

Code:

function transposeTwoStrings(array) { 
 
    var x = array[0]; 
 
    var y = array[1]; 
 
    var longestString = 0; 
 
    var result = ''; 
 

 
    if(x.length > y.length) { 
 
    longestString = x; 
 
    } 
 
    else if(y.length > x.length) { 
 
    longestString = y; 
 
    } 
 
    else if(x.length === y.length) { 
 
    longestString = x; 
 
    } 
 
    
 
    for(var i = 0; i < longestString.length; i++) { 
 
    result += ((x[i] || ' ') + ' ' +(y[i] || ' ')) + '\n'; 
 
    }    
 
    return result; 
 
} 
 
    
 
console.log(transposeTwoStrings(['Hello','World']));

 Replit Output: 

     H W 
     e o 
     l r 
     l l 
     o d 
         <--(This is the space) 
     => undefined 
+0

ich keinen Platz erhalten, wenn das Lauf in der Konsole scheint aber immer undefiniert zu erscheinen, wenn man die Funktion per Copy/Paste ausführt. Wenn Sie die 'console.log()' für 'alert()' vertauschen, werden Sie feststellen, dass Ihre Funktion keine Probleme oder falsche Antworten hat. – NewToJS

+0

repl.it fügt nur eine neue Zeile nach jeder console.log ein – Purag

+1

Ich kann das auch nicht replizieren, aber Sie haben ein nachstehendes '\ n' nach dem letzten' d' welches Sie mit der 'trim()' Funktion entfernen könnten. –

Antwort

1

Sie erhalten eine neue Zeile \n am Ende, die von einigen Browsern ignoriert. Sie können es entfernen mit trim()

function transposeTwoStrings(array) { 
    var x = array[0]; 
    var y = array[1]; 
    var longestString = 0; 
    var result = ''; 

    if (x.length > y.length) { 
     longestString = x; 
    } 

    else if (y.length > x.length) { 
     longestString = y; 
    } 

    else if (x.length === y.length) { 
     longestString = x; 
    } 

    for (var i = 0; i < longestString.length; i++) { 
     result += ((x[i] || ' ') + ' ' + (y[i] || ' ')) + '\n'; 
    } 
    return result.trim(); 
} 
console.log(transposeTwoStrings(['Hello', 'World'])); 
+0

Warum nicht einfach result.trim() 'zurückgeben? –

+0

Ja das ist besser, danke :) –

+0

Super, danke für die Hilfe! – RomeP

0

Sie Ihre for Schleife eine neue Zeile für alle bis auf die letzte Zeile, statt + '\n' nach jedem hinzufügen nur ändern könnte:

for (var i = 0; i < longestString.length; i++) { 
    result += ((x[i] || ' ') + ' ' + (y[i] || ' ')); 
    if(i < longestString.length - 1) {result += '\n';} 
} 
+0

Danke für deine Hilfe! – RomeP

Verwandte Themen