定义一个函数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 ;
答案 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)
:
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>