"Potential Infinite Loop" 混乱
"Potential Infinite Loop" Confusion
当我运行下面的函数时,我得到这个错误:
"Error: Potential infinite loop."
问题似乎是我在 splice 方法中使用的“0”,因为当我将它更改为任何其他数字 (1 - 9) 时,我没有收到此错误。
我不确定这将如何创建一个无限循环。
我在拼接方法中使用的“0”是否与 "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');
array.splice(i, 0, " ");
表示在当前 i
索引处插入一个新元素。这意味着位于 i
的项目被推到 i + 1
。因此,在循环的下一次迭代中,您将再次处理同一个项目,从而导致另一个插入等,直到永远。
您可以在 if
块内增加 i
额外的时间,但我更喜欢循环 backwards:
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'));
当我运行下面的函数时,我得到这个错误:
"Error: Potential infinite loop."
问题似乎是我在 splice 方法中使用的“0”,因为当我将它更改为任何其他数字 (1 - 9) 时,我没有收到此错误。
我不确定这将如何创建一个无限循环。
我在拼接方法中使用的“0”是否与 "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');
array.splice(i, 0, " ");
表示在当前 i
索引处插入一个新元素。这意味着位于 i
的项目被推到 i + 1
。因此,在循环的下一次迭代中,您将再次处理同一个项目,从而导致另一个插入等,直到永远。
您可以在 if
块内增加 i
额外的时间,但我更喜欢循环 backwards:
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'));