反转字符串时,我最后得到一个 NaN。 Javascript

When reversing string, I'm getting a NaN at the end. Javascript

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

试试这个

    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);

这个问题由 2 个小问题组成。

第一个问题:

"result" 未初始化,因此它包含 "undefined" ,稍后会弄乱字符串。将其初始化为空字符串,以便 JavaScript 知道它应该将其作为字符串处理,因为“+”运算符已过载以处理加法和字符串连接。

第二题

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);

length 属性 of String returns 字母的计数而 Array 的索引从 0 开始。所以,你的问题可能通过将字符串长度减 1 来解决,即 userInput.length - 1.

var userInput, result="";

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);

您从 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.

你的情况会更好,通过使用如下所示的方式反转 JavaScript 中的字符串:

'YOURSTRING'.split('').reverse().join('');

e-g

'abcdef'.split('').reverse().join('') will give you fedcba

得到你的字符串。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);