我试图反转一个字符串,它确实有效,但是当我将userInput [i]存储到结果变量中时,我在字符串的末尾得到了NaN。
//variables
var userInput, result;
userInput = prompt("Enter a string that you want reversed: ");
for (var i = userInput.length; i >= 0; i--) {
result += userInput[i];
}
console.log("Your string: \n" + result);
答案 0 :(得分:3)
您从userInput.length
开始循环,这是一个错误的索引,因为userInput[userInput.length]
是undefined
。你需要做的是从这样的userInput.length - 1
开始(并且在开始累积结果之前不要忘记将result
初始化为空字符串):
result = "";
for (var i = userInput.length - 1; i >= 0; i--) {
result += userInput[i];
}
注意:当我们访问userInput.length
索引(即 userInput[userInput.length]
时,我们实际上并未到达数组)因为循环的条件通常为i < userInput.length
,一旦i
等于userInput.length
,它就会失败。当向下一个数组时,应该跟踪允许的索引。
注2:使用string.charAt(index)
而不是string[index]
更安全。了解here。
答案 1 :(得分:2)
通过使用以下内容在JavaScript中反转字符串,您会感觉更好:
'YOURSTRING'.split('').reverse().join('');
e-g
'abcdef'.split('')。reverse()。join('')会给你fedcba
答案 2 :(得分:1)
试试这个
var userInput, result = ""; // initialize this first
userInput = prompt("Enter a string that you want reversed: ");
for (var i = userInput.length - 1; i >= 0; i--) {
result += userInput[i];
}
console.log("Your string: \n" + result);
答案 3 :(得分:1)
这个问题包含两个较小的问题。
第一个问题:
&#34;导致&#34;未初始化,因此它包含&#34; undefined&#34;之后与弦相混淆。将其初始化为空字符串,以便JavaScript知道它应该将其作为字符串处理,因为&#34; +&#34; -operator被重载以处理添加和字符串连接。
第二个问题
userInput字符串的索引从0开始 - (userInput.length - 1),因此相应地更改循环。
var userInput, result = ""; // initialize this first
userInput = prompt("Enter a string that you want reversed: ");
// initialize i with (userInput.length - 1) since the index ends there
for (var i = userInput.length - 1; i >= 0; i--) {
result += userInput[i];
}
console.log("Your string: \n" + result);
答案 4 :(得分:1)
length
的{{1}}属性返回字母的计数,而String
的索引从0开始。因此,您的问题可以通过将字符串长度减少1来解决,即Array
。
userInput.length - 1
答案 5 :(得分:0)
获取字符串。Split
将其添加到数组中。reverse
数组和join
。最后,您将获得反向字符串。
var userInput, result = ""; // initialize this first
userInput = prompt("Enter a string that you want reversed: ");
result = userInput.split("").reverse().join("");
console.log("Reversed string: \n" + result);
&#13;