Javascript - 字符串 .split 后未定义的数组值
Javascript - Undefined array value after string .split
我想检查一个字符串是否是回文,但我在反转字符串时遇到了问题。我知道 Javascript 中有很多关于回文的问题,但我想在路上找到它,但我仍然找不到这些问题的解决方案。
代码
function reverse(string){
var str = string;
var split = str.split("");
var newStr= "";
for(var i=split.length; i>=0; i--){
newStr += split[i];
}
console.log(newStr);
}
var str= 'blue';
reverse(str);
结果
"undefinedeulb"
问题
正如我们所见,结果是字符串开头的未定义值。
我用 PHP 脚本测试了这段代码,它工作正常。这怎么会是 Javascript 的问题?以及如何摆脱它?
数组的索引以0开头,例如
var arr = ["a", "b", "c", "d", "e"];
最后一个是arr[4]
// "e"
但是 arr.length
是 5,
所以 arr[5
] 是 undefined
.
所以 arr[arr.length]
总是 undefined
!
在您的示例中,第一次迭代 i
等于 split.length
是 undefined
,因此请尝试
for(var i = split.length - 1; i >= 0; i--)
.
split.length 等于 4,但是因为数组是从零开始索引的,所以您需要从 3 开始向下移动到零。
function reverse(string){
var str = string;
var split = str.split("");
var newStr= "";
for(var i = split.length -1; i >= 0; i--){
newStr += split[i]; console.log(i);
}
console.log(newStr);
}
var str= 'blue';
reverse(str);
我想检查一个字符串是否是回文,但我在反转字符串时遇到了问题。我知道 Javascript 中有很多关于回文的问题,但我想在路上找到它,但我仍然找不到这些问题的解决方案。
代码
function reverse(string){
var str = string;
var split = str.split("");
var newStr= "";
for(var i=split.length; i>=0; i--){
newStr += split[i];
}
console.log(newStr);
}
var str= 'blue';
reverse(str);
结果
"undefinedeulb"
问题
正如我们所见,结果是字符串开头的未定义值。 我用 PHP 脚本测试了这段代码,它工作正常。这怎么会是 Javascript 的问题?以及如何摆脱它?
数组的索引以0开头,例如
var arr = ["a", "b", "c", "d", "e"];
最后一个是arr[4]
// "e"
但是 arr.length
是 5,
所以 arr[5
] 是 undefined
.
所以 arr[arr.length]
总是 undefined
!
在您的示例中,第一次迭代 i
等于 split.length
是 undefined
,因此请尝试
for(var i = split.length - 1; i >= 0; i--)
.
split.length 等于 4,但是因为数组是从零开始索引的,所以您需要从 3 开始向下移动到零。
function reverse(string){
var str = string;
var split = str.split("");
var newStr= "";
for(var i = split.length -1; i >= 0; i--){
newStr += split[i]; console.log(i);
}
console.log(newStr);
}
var str= 'blue';
reverse(str);