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 をフリーズさせるだけです。

更新: これは、ペーストビンのすべての栄光である「さらに多くのことを行う」です: 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 に答える