2017-03-16 51 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

運行這個時候我沒有得到任何空間在控制檯中,但通過複製/粘貼運行功能時,似乎總是出現。如果你將'console.log()'換成'alert()',你會看到你的函數沒有問題或者返回錯誤。 – NewToJS

+0

repl.it只是在每個console.log後面添加一個換行符 – Purag

+1

我無法複製這個,但是在最後一個'd'後面有'\ n',您可以使用'trim()'函數刪除它。 –

回答

1

你這是由某些瀏覽器忽略年底得到一個換行符\n。您可以在每個後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循環只換行添加到所有但最後一行,而不是+ '\n'

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

謝謝你的幫助! – RomeP

相關問題