2012-07-25 12 views

Odpowiedz

14

Wygląda na to, że nie możesz. Oto źródło arrayForEach (od utils.js na stronie KO GitHub)

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

Jeśli trzeba przerwać lub kontynuować, można po prostu toczyć własną pętli jak w kodzie źródłowym powyżej.

+0

Jaki jest cel inicjowania 'j'? Możesz po prostu zrobić 'i

+2

@TheMuffinMan Punktem j jest prawdopodobnie zapisanie kilku milisekund, zapobiegając konieczności wyodrębnienia tablicy podczas każdej iteracji pętli. Zobacz [to pytanie StackOverflow] (http://stackoverflow.com/questions/17989270/javascript-for-loop-performance-storing-array-length-in-a-variable). Z jsperf, do którego odnosi się akceptowana odpowiedź na to pytanie, wygląda na to, że w nowoczesnych przeglądarkach nie robi to wielkiej różnicy. – bmode

9

Wygląda ko.utils.arrayFirst lub ko.utils.arrayFilter zmieści twoje potrzeby lepiej niż obecnego podejścia

+0

Wymóg dotyczy wydajności. Chcę zrobić wiele rzeczy w pętli. – ozz

+0

Użyj prostej pętli, zaoszczędzi ci to kilka milisekund, ponieważ w tym przypadku po prostu uruchomisz kod i nie wywołasz funkcji podrzędnej, którą przekazujesz do arrayForEach – Madman

Powiązane problemy