我编写了一个名为 reverseStr
的函数,它接受一个字符串作为参数并返回该字符串,但字符相反。
例如:reverseStr('bootcamp');
=> 'pmactoob'
以下是我的程序:
function reverseStr(str)
{
var splitStr = str.split("");
console.log(splitStr);
var reverseString = [];
for(var i = 0; i <= splitStr.length -1 ; i++)
{
for(var j = splitStr.length - 1; j >= 0; j--)
{
reverseString[i] = splitStr[j]
}
}
return reverseString.toString().replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
}
如果我运行函数reverseStr("bootcamp")
,它会返回bbbbbbbb
。
有人看到代码有问题吗?
注意:我不想使用REVERSE()
内置函数
但是,我发现以下代码成功了但仍然需要我最初问题的答案
function reverseStr(str)
{
var splitStr = str.split("");
reverseStr = "";
for(var i = splitStr.length - 1; i >= 0 ; i = i - 1)
{
reverseStr += splitStr[i];
}
return reverseStr;
}
最佳答案
您不需要对字符进行双重迭代,即不需要嵌套 for
循环。迭代一次并以相反的顺序获取字符,如下所示:
function reverseStr(str)
{
var splitStr = str.split("");
console.log(splitStr);
var reverseString = [];
for(var i = 0, j=splitStr.length-1; i <= splitStr.length -1 ; i++, j--)
{
reverseString[i] = splitStr[j]
}
return reverseString.toString().replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
}
你可以看到这里循环持续了 i <= splitStr.length -1
,即字符串的长度。这足以获取镜像字符( i
与 Array.length-i
)。
这是一个演示的工作片段:
var reverseStr = function(str) {
let result = String();
for(let i = str.length-1; i >= 0; i--) {
result += str.charAt(i);
}
return result.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
}
$('button').click(function() {
$('.result').text(reverseStr($('#str').val()));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="str">
<button>Reverse it</button>
<div class="result"></div>
也许实现相同目标的更优雅的方法(除了 Array.prototype.reverse())是使用 String.prototype.chatAt()
。这将避免与数组之间的两次转换,并且还可以节省一个变量。诚然,代码更短,其作用也更明显。
var reverseStr = function(str) {
let result = String(); // An empty string to store the result
for(let i = str.length-1; i >= 0; i--) { // Iterate backwards thru the chars and add to the result string
result += str.charAt(i);
}
return result.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, ''); // Original return method of the author
}
$('button').click(function() {
$('.result').text(reverseStr($('#str').val()));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="str">
<button>Reverse it</button>
<div class="result"></div>
关于javascript - JS : Reversing a string using nested loop does not work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46637182/