【发布时间】:2016-08-25 09:01:29
【问题描述】:
我尝试在控制台中逐行调试这一行,每一行似乎都可以正常工作,但是当我输入连续的偶数时,我的浏览器会冻结。这可能很明显,但现在它正在躲避我。代码如下:
$('body').append('<input type="number" id="myInput"><input type="submit" id="submit">');
$('#submit').click(function(){
var myVal = $('#myInput').val();
myArray = myVal.split("");
for (var i = 0; i < myArray.length -1; i++){
if((myArray[i]%2 == 0) && (myArray[i+1]%2 == 0)){
myArray.splice(i,0,'-')
}
}
console.log(myArray);
});
【问题讨论】:
-
使用
myArray.length然后在循环中修改所述数组是非常不好的做法。如果你不断向数组推送东西,那么i什么时候会成为<而不是myArray.length?请记住,myArray.lenght会在每个循环步骤中进行评估。 -
确实,您不断将“-”推入数组,因此内存不足。您确定要查找的逻辑是:“当 i 是偶数且 i+1 也是偶数时,将字符串减号推入 i 之后的数组中。”
-
好的,我看到了在循环计数器中使用增加的数组长度的问题......
-
Voodoo 黑魔法替代品:
result = $('#myInput').val().replace(/([02468])(?=[02468])/,'$1-')
标签: javascript arrays loops