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

我所做的只是在每個返回的元素上調用PaintDiagram。我試着用谷歌搜索一下,因爲我非常有信心這很容易被縮減,但卻無法提供一個簡單的例子。使用foreach可以簡單得多嗎?

此函數是否適用於任何更多的重構?

+5

你上面的內容是最快的,我也沒有看到任何需要重構一個簡單的循環。 – 2012-02-15 17:05:37

+0

看看這個問題(和答案)http://stackoverflow.com/questions/242841/javascript-foreach-vs-for。 – 2012-02-15 17:14:56

回答

0

按照該評論,我選擇離開我的解決方案。

2

當然,我肯定會使用jQuery的$.each

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

慢一點,慢一點。 – 2012-02-15 17:05:53

+2

如果你真的想去那裏,爲什麼不省略參數並說'PaintDiagram(this)'? ('each'將每個迭代的上下文綁定到對象) – harpo 2012-02-15 17:07:36

+0

$ .each實際上比..in – 2012-02-15 17:18:38

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

這是非常好,因爲你可以用JS做的,因爲它沒有一個foreach

+0

我認爲你需要「PaintDiagram(i);」讓它工作 – 2012-02-15 17:09:40

+1

@pete不,我將是圖數組中的關鍵 – 2012-02-15 17:15:15

+1

我建議檢查'if(diagrams.hasOwnProperty(i))'以確保您沒有從原型鏈中獲取屬性。 – 2012-02-15 17:29:15