2012-02-15 7 views
0
function GetDiagrams(componentID) { 
    $.getJSON("../PlanView/GetDiagrams", { ComponentID: componentID }, function (diagrams) { 
     for (var i = 0; i < diagrams.length; i++) { 
      PaintDiagram(diagrams[i]); 
     } 
    }); 
} 

私がやっているのは、返された各要素に対してPaintDiagramを呼び出すことです。私はこれが簡単に還元できると自信が持てますが、簡単な例を引き上げることはできませんでしたので、少しGoogle検索を試みました。これは、foreachを使用するともっと簡単に書くことができますか?

この機能は、それ以上のリファクタリングの候補ですか?

+5

上記のものが最も速く、また単純なforループをリファクタリングする必要はありません。 –

+0

この質問をチェックしてください(および回答)http://stackoverflow.com/questions/242841/javascript-foreach-vs-for –

答えて

0

を持っていないので、あなたはJSで行うことができますので、これはかなり良いことだを使用します私の解決策をそのまま残すことを選択しました。

2

確かに、私は間違いなくjqueryの$.each

$.getJSON("../PlanView/GetDiagrams", { ComponentID: componentID }, function (diagrams) { 
    $.each(diagrams, function() { 
     PaintDiagram(this); 
    }); 
}); 
+2

遅くなり、遅くなります。 –

+2

本当にそこに行きたいのであれば、引数を省略して 'PaintDiagram(this)'と言うのはなぜですか? ( 'each'は各反復のコンテキストをオブジェクトにバインドします) – harpo

+0

$ .eachは実際にfor..inより遅い –

0
function GetDiagrams(componentID) { 
    $.getJSON("../PlanView/GetDiagrams", { ComponentID: componentID }, function (diagrams) { 
    for (i in diagrams) { 
     PaintDiagram(diagrams[i]); 
    } 
    }); 
} 

それは1としてforeachの

+0

"PaintDiagram(i);"それを動作させるには –

+1

@peteいいえ、私はダイアグラムの配列のキーになります –

+1

プロトタイプチェーンからプロパティを取得していないことを確認するために 'if(diagrams.hasOwnProperty(i))'をチェックすることをお勧めします。 –

関連する問題