在javascript中反转字符串

时间:2015-03-03 11:12:15

标签: javascript

定义一个函数reverse()来计算字符串的反转。例如,反向(" jag testar")应该返回字符串" ratset gaj"。我收到错误,我是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 ;

3 个答案:

答案 0 :(得分: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"

答案 1 :(得分:0)

OP中的

function (string)

在函数声明中,名称是必需的,因此:

function reverse(string)

{
    var length = string.length;

不需要 length ,只需将for循环中的 i 初始化为 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 ;

您省略了右括号:

}

如评论中所述,您可以使用拆分反向加入,或使用递归功能。您也可以使用 split forEach ,但可能更快地使用普通循环:

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

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

虽然+=在某些较旧的浏览器中速度较慢。也许测试性能 - 哦看,它是been done ...并且一个普通的循环是很长的路。 ; - )

答案 2 :(得分:-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>