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