当换弦时,我最后得到一个NaN。使用Javascript

时间:2017-01-30 12:39:10

标签: javascript string reverse

我试图反转一个字符串,它确实有效,但是当我将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);

6 个答案:

答案 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。最后,您将获得反向字符串。

&#13;
&#13;
 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;
&#13;
&#13;