string .split后未定义的数组值

Javascript - Undefined array value after string .split

本文关键字:数组 未定义 split string      更新时间:2023-09-26

我想检查字符串是否为回文,但我在反转字符串时遇到问题。我知道在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。长度等于4,但是因为数组是零索引的,所以需要从3开始向下移动到0。

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