2012-07-25 6 views

Respuesta

14

Parece que no se puede. Aquí está la fuente de arrayForEach (de utils.js en la página de GitHub KO)

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

Si tiene que romper o continuar, sólo puede rodar su propio bucle como en el código fuente de arriba.

+0

¿Cuál es el punto de inicializar 'j'? Puedes hacer 'i

+2

@TheMuffinMan El punto de j es, posiblemente, guardar algunos milisegundos al evitar tener que eliminar la referencia de la matriz durante cada iteración de bucle. Ver [esta pregunta de StackOverflow] (http://stackoverflow.com/questions/17989270/javascript-for-loop-performance-storing-array-length-in-a-variable). Desde el jsperf al que se hace referencia en la respuesta aceptada a esa pregunta, parece que en los navegadores modernos no hace mucha diferencia. – bmode

9

parece que ko.utils.arrayFirst o ko.utils.arrayFilter se ajuste a sus necesidades mejor que el actual enfoque

+0

El requisito es sobre el rendimiento. Quiero hacer varias cosas en un bucle. – ozz

+0

Utilice un bucle simple, le ahorrará unos milisegundos, porque en este caso solo ejecutará su código y no llamará a la función secundaria que pase a arrayForEach – Madman

Cuestiones relacionadas