2015-03-03 66 views
-2

定義計算字符串反轉的函數reverse()。例如,反向(「JAG testar」)應返回字符串「ratset GAJ」。正如我得到錯誤,我是新來的JavaScript。我得到了。但它的代碼是不執行在javascript中反向字符串

//my code 
function (string) 
{ 
    var length = string.length; 
    var reversed = []; 
    var joined = (""); 
    for (var i = length; i > 0; i--){ 
     reversed.push(string.charAt(i-1)); 
    } 

    for (i = 0; i < (length) ; i++){ 
     joined += (reversed[i]); 

    } 

    return joined ; 
+0

'function reverse(s){return s.length?reverse(s.slice(1))+ s [0]:''}' – elclanrs 2015-03-03 11:14:49

+2

'string.split(「」)。reverse() .join(「」)' – nnnnnn 2015-03-03 11:14:58

+2

你收到了什麼錯誤? – JJJ 2015-03-03 11:15:11

回答

0
在OP

function (string) 

在函數聲明,名稱是強制性的,因此:

function reverse(string) 

{ 
    var length = string.length; 

沒有需要長度,只是初始化中的for循環到string.length

var reversed = []; 
    var joined = (""); 

沒有必要爲分組操作:

var joined = ""; 

但有沒有必要加入所有。

for (var i = length; i > 0; i--){ 
     reversed.push(string.charAt(i-1)); 
    } 

    for (i = 0; i < (length) ; i++){ 
     joined += (reversed[i]); 
    } 

爲什麼把字符放到數組中,然後迭代數組以將它們放回到字符串中?第一循環結束之後立即可以做:

return reversed.join(''); 

    return joined ; 

您省略右括號:

} 

正如在評論中指出,你可以使用分裂反向加入,或一個遞歸函數。你也可以使用分裂的forEach,但可能更快地使用一個簡單的循環,你所做的:

function reverse(s) { 
    var result = '', 
     i = s.length; 

    while (i) { 
    result += s[--i]; 
    } 
    return result; 
} 

雖然+=可以慢一些舊的瀏覽器。也許測試性能 - 哦,看,這是been done ...和一個簡單的循環是最快的一個很長的路。 ;-)

-2
<!DOCTYPE html> 
<html> 
<body> 

<p>Click the button to reverse the order of the elements in the array.</p> 

<button onclick="myFunction()">Try it</button> 

<p id="demo"></p> 

<script> 
var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
document.getElementById("demo").innerHTML = fruits; 

function myFunction() { 
    fruits.reverse(); 
    document.getElementById("demo").innerHTML = fruits; 
} 
</script> 

</body> 

+2

但是......問題是關於一個字符串,而不是一個數組。 – nnnnnn 2015-03-03 11:16:05

+2

歡迎來到[so]。看起來你已經從[W3Schools](http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_reverse)複製了這個文件而沒有歸屬。在使用其他來源的內容時,請提供歸屬地(通過提供鏈接),並注意任何相關內容均來自該來源。有關更多信息,請閱讀[參考指南](http://stackoverflow.com/help/referencing)。謝謝! – 2015-03-03 11:22:48

+0

感謝關注我 – vikas 2015-03-03 11:37:58

0

1點:你function不能很好地宣稱:

function (string) 

javascript聲明功能正確的方法是:

function functionName(varName) 

點2(我猜錯字):你的函數必須}結束時,如果沒有將拋出錯誤。

在你的具體情況

因此,如果您更換功能是:

function reverse(s){ 
    return s.split("").reverse().join(""); 
} 

,並調用它以這樣的方式

var yourString = "ABCDE"; 
var reversedString = reverse(yourString); 

// reversedString = "EDCBA" 

要了解它是如何工作的:

  • 它將字符串拆分爲split("")的單個字符數組,因此"ABCDE".split("") = ["A","B","C","D","E"]
  • arrays:reverse()反轉順序的功能,所以["A","B","C","D","E"].reverse() = ["E","D","C","B","A"]
  • join("")再次重建的字符串,因此["E","D","C","B","A"].join("") = "EDCBA"