"潜在的无限循环"混乱

时间:2016-10-07 05:52:02

标签: javascript arrays for-loop infinite-loop array-splice

当我运行以下功能时,我收到此错误:

"错误:潜在的无限循环。"

问题似乎是" 0"我在拼接方法中使用,因为当我将其更改为任何其他数字(1 - 9)时,我不会收到此错误。

我不确定这会如何产生无限循环。

" 0"我在拼接方法中使用了与#34; i"或者其他的东西?

非常感谢帮助,谢谢。

function spinalCase(str) {
  var array = str.split("");
  for (i = 0; i < array.length; i++) {
    if (array[i] !== array[i].toLowerCase()) {
      array.splice(i, 0, " ");
    }
  }
  return array;
}
spinalCase('AllThe-small Things');

1 个答案:

答案 0 :(得分:2)

array.splice(i, 0, " ");表示在当前i索引处插入新元素。这意味着i处的项目会被推升到i + 1。那么在循环的下一次迭代中,你再次处理同一个项目,永远产生另一个插入等。

您可以在i块内增加if一段额外时间,但我更喜欢向后循环

function spinalCase(str) {
  var array = str.split("");
  for (i = array.length - 1; i >= 0; i--) {
    if (array[i] !== array[i].toLowerCase()) {
      array.splice(i, 0, " ");
    }
  }
  return array;
}
console.log(spinalCase('AllThe-small Things'));