2015-08-25 65 views
0

我試圖接受一個字符串(str)作爲輸入,然後返回該字符串反向。 (現在它將返回一個數組,因爲我沒有將輸出轉換爲字符串)我的問題是我不斷收到錯誤TypeError:newString.push不是函數。我將newString聲明爲一個數組,並試圖將元素推入它。我不明白我做錯了什麼。Javascript - TypeError:newString.push不是函數

function FirstReverse(str) { 
     var newString = [ ]; 
     var eachLetter = str.split(""); 
     for(i = eachLetter.length; eachLetter.length >= 0; i - 1){ 
     newString =+ newString.push(eachLetter[i]);  
    } 
    return newString; 
} 

回答

3

newString = + something

算術運算會變成newString成多個。

完全不需要在push之後重新指定newString

"something".split("").reverse().join("") 

解決您的問題:

newString.push(eachLetter[i]) // append to newString 
+0

我不知道有關的算術運算。我認爲它只是將'eachLetter'數組中的下一個元素添加到'newString'中。 –

1

更容易扭轉一個字符串的方式

  • eachLetter.length >= 0 < - 這將導致一個無限循環,應該是i >= 0
  • i你應該從eachLetter.length - 1開始,最後一個索引
  • 不重新分配newString陣列
  • 您應該更新的i的價值,如果你不希望一個無限循環,i = i - 1
  • 不返回數組,加入的元素,以產生一個字符串
function FirstReverse(str) { 
    var newString = []; 
    var eachLetter = str.split(""); 

    for (i = eachLetter.length - 1; i >= 0; i = i - 1){ 
     newString.push(eachLetter[i]);  
    } 

    return newString.join(""); 
} 
+0

感謝您的回覆!你的解釋對於理解我的錯誤是最有幫助的。我不知道'.reverse()' –

0

你分配(實際添加)以newStringnewResult.push()結果。

關於Array.push(),返回值是一個數字,它修改了原始數組。 (Array.push()

您還可以在(無限)for循環一些麻煩..

最後,你返回一個數組,而不是字符串。

試試這個修改:

function FirstReverse(str) { 
    var newString = [ ]; 
    var eachLetter = str.split(""); 
    for(i = eachLetter.length - 1; i >= 0; i--){ 
     newString.push(eachLetter[i]); 
    } 
    return newString.join(""); 
} 

你能避免使用數組:

function FirstReverse(str) { 
    var i, rev = ""; 
    for(i = str.length - 1; i >= 0; i--) rev += str[i]; 

    return rev; 
}