2

我正在尝试使用以下代码迭代 Javascript 中的一些数据:

for (var i = 0; i < fromdata.length; i++) {
    var mainid = fromdata[i].id;
    var sub = afcHelper_Submissions[mainid];
    /* do more stuff */

fromdata是一个对象数组,看起来像这样:

[{ type="ffu", to=" Jon Corzine ", id=1, more...}, { type="ffu", to=" Jon Corzine ", id=2, more...}]

如您所见,我只想获取每个对象的 id 并将其存储到 mainid ,然后对其进行更多操作;但是,我遇到了麻烦:循环!循环!循环!循环一次又一次地运行。它永远不会停止,只是设法冻结了 Firebug。

更新:这是“做更多的事情”,在它的所有 pastebin 荣耀中:http: //pastebin.com/Mfr90uq7。请注意,我将变量名从 sub 更改为 sub_m 以避免潜在的冲突,但问题仍然存在。

4

1 回答 1

3

如果条件始终为真,则循环只能是无限的。在您的情况下,它看起来应该达到 false ,但可以证明formData每次循环迭代都会获取新元素,或者i正在修改并返回到以前的值。

我建议创建仅用于比较目的的变量:

var max = fromdata.length;
for (var count = 0; count < max; count++) {
    var i = count;
    // your stuff using formdata and i

现在max并且count不会被循环中的代码修改,循环将结束。

于 2013-07-18T10:05:09.050 回答