2012-07-25 14 views

risposta

14

Sembra che non si può. Ecco la fonte di arrayForEach (dal utils.js sulla pagina GitHub KO)

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

Se avete bisogno di rompere o continuare, si può semplicemente rotolare il proprio ciclo for come nel codice sorgente sopra.

+0

Qual è il punto di inizializzazione di 'j'? Puoi semplicemente fare 'i

+2

@TheMuffinMan Il punto di j è il possibile salvataggio di alcuni millisecondi impedendo il dereferenziamento dell'array durante ogni iterazione del ciclo. Vedi [questa domanda StackOverflow] (http://stackoverflow.com/questions/17989270/javascript-for-loop-performance-storing-array-length-in-a-variable). Dal jsperf cui fa riferimento la risposta accettata a questa domanda, sembra che nei browser moderni non faccia molta differenza. – bmode

9

Sembra come ko.utils.arrayFirst o ko.utils.arrayFilter si adatta alle vostre esigenze meglio allora il vostro approccio attuale

+0

Il requisito riguarda le prestazioni. Voglio fare più cose in un ciclo. – ozz

+0

Usa un ciclo semplice, ti farà risparmiare pochi millisecondi, perché in questo caso eseguirai semplicemente il tuo codice e non chiamerai la sottofunzione che passerai a arrayForEach – Madman

Problemi correlati