保持触发无限循环?

时间:2017-05-25 14:54:02

标签: javascript

我正在尝试交换此字符串中的每个字符:

  

“嗨,你们真棒!”

输出应该是:

  

“ihayy uog yu sra ewasemo!e”

我编写了以下代码 - 不幸的是,它一直触发无限循环。我已经尝试了几次迭代,但无法弄清楚为什么我无法阻止循环?有人可以帮助解释为什么会这样吗?

提前致谢!

var input = 'hiya you guys are awesome!';

function flip (string) {
  var flipped = [] 
  var flippedRejoin = []
  var brokenString = string.split('')
//console.log(brokenString)
  for (var i = 0; i < string.length; i+1) {
    flipped.push(brokenString[i+1]);
    flipped.push(brokenString[i]);
//  console.log(flipped);
  }
//for (var e = 0; e < string.length; e++) {
    flippedRejoin = flipped.join('')
    console.log(flippedRejoin)
//}


  return flippedRejoin
}
flip(input)

1 个答案:

答案 0 :(得分:1)

您的for循环错误,请执行:

for (var i = 0; i < string.length-1; i+=2) {

i + 1不会以任何方式改变我,所以你需要将它递增2(因为你想翻转)。当你访问i + 1时,最好停在长度为1 ......

总而言之:

function flip (string) {
  var flipped = [];
  for (var i = 0; i < string.length-1; i+=2) {
      flipped.push(string[i+1],string[i]);
  }
   return flipped.join('');
 }

http://jsbin.com/tohositide/edit?console