Javascript - 字符串.split之后的未定义数组值

时间:2016-10-19 22:15:51

标签: javascript function reverse

我想检查字符串是否是回文,但我在翻转字符串时遇到问题。我知道在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的问题?以及如何摆脱它?

2 个答案:

答案 0 :(得分:1)

数组的索引以 0 开头,例如

var arr = ["a", "b", "c", "d", "e"];

最后一个是arr[4] //“e”

但是arr.length是5, 所以arr[5]是undefined

所以arr[arr.length] 总是 undefined

在您的示例中,第一次迭代i等于split.lengthundefined,因此请尝试

for(var i = split.length - 1; i >= 0; i--)

答案 1 :(得分:0)

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