2012-07-25 2 views

Antwort

14

Sieht aus wie Sie passen nicht. Hier ist die Quelle von arrayForEach (von utils.js auf der KO GitHub Seite)

arrayForEach: function (array, action) { 
    for (var i = 0, j = array.length; i < j; i++) 
     action(array[i]); 
}, 

Wenn Sie brechen oder fortsetzen, können Sie einfach Ihre eigene Rolle für Schleife wie im Quellcode oben.

+0

Was ist der Punkt der Initialisierung von 'j'? Sie können einfach 'i

+2

@TheMuffinMan Der Punkt von j besteht darin, möglicherweise einige Millisekunden zu sparen, indem verhindert wird, dass das Array während jeder Schleifeniteration dereferenziert werden muss. Siehe [diese StackOverflow-Frage] (http://stackoverflow.com/questions/17989270/javascript-for-loop-performance-storing-array-length-in-a-variable). Von der Jsperf, auf die in der akzeptierten Antwort auf diese Frage Bezug genommen wird, sieht es aus, als ob es auf modernen Browsern keinen großen Unterschied macht. – bmode

9

Scheint, wie ko.utils.arrayFirst oder ko.utils.arrayFilter Ihre Bedürfnisse besser als Ihre aktuelle Ansatz

+0

Die Anforderung ist die Leistung. Ich möchte mehrere Dinge in einer Schleife machen. – ozz

+0

Verwenden Sie einfache Schleife, es spart Ihnen einige Millisekunden, denn in diesem Fall werden Sie nur Code ausführen und nicht aufrufen Unterfunktion, die Sie an ArrayForEach übergeben – Madman