2017-03-16 20 views
0

私はこのコードをreplitで実行すると、答えと未定義の間に余分なスペースが返される理由を理解できませんでした。 '\ n'はフォーマットされたままでなければなりませんが、誰でもそのスペースを取り除く方法を説明できますか?助けをお待ちしています。なぜこの関数の出力に余分なスペースがありますか?

コード:

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

これを実行しているとき、私は何のスペースを取得していませんコンソールでは、しかし、定義されていないときに表示されるように機能を実行するときにコピー/貼り付け経由で。 'alert()'の 'console.log()'を入れ替えても、あなたの関数は問題ないか誤って返ってくるでしょう。 – NewToJS

+0

repl.itはすべてのconsole.logの後に改行を追加するだけです。 – Purag

+1

これを複製することはできませんが、 'trim()'関数で削除できる最後の 'd'の後に' \ n'があります。 –

答えて

1

あなたは一部のブラウザでは無視される末尾の改行\nを取得します。あなたは、あなたが代わりに各後+ '\n'の全てが、最後の行に改行を追加するだけに、あなたのforループを修正することができ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

'return result.trim()'だけではないのはなぜですか? –

+0

はい、それは良いです、ありがとう:) –

+0

恐ろしい、助けてくれてありがとう! – RomeP

0

でそれを削除することができます

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

お手数ですが助けてください! – RomeP

関連する問題