2009-09-08 13 views
19

Tengo una lista de JSON que quiero para repetir, pero no tome la primera entrada, como así:

$.each(
    data.collection, 
    function() { DoStuffButOnlyIfNotTheFirstOne(); } 
); 

¿Alguna idea?

Respuesta

36

¿Es esto lo suficientemente bueno?

$.each(
    data.collection, 
    function(i) { 
     if (i > 0) 
      DoStuff(); 
    } 
); 
+1

brillante, gracias – mwjackson

0
$.each(
    data.collection, 
    function(i) { if (i>0) DoStuffButOnlyIfNotTheFirstOne(); } 
); 
15
$.each(
    data.collection, 
    function(i) { 
     if(i) 
      DoStuffButOnlyIfNotTheFirstOne(); 
    } 
); 

o, probablemente de manera más eficiente:

$.each(
    data.collection.slice(1), 
    function() { 
     DoStuff(); 
    } 
); 
+0

me gusta que, a pesar de su poco menos legible que la solución aceptada. – mkoryak

+0

Me gusta sobre todo el uso de la porción (1). Muy eficiente. – thepriebe

2

Puede utilizar el viejo método firstFlag:

var firstFlag = true; 
$.each(
data.collection, 
    function() { 
    if(!firstFlag) DoStuffButOnlyIfNotTheFirstOne(); 
    firstFlag = false; 
} 

Pero en cambio, te recomiendo que usted filtra su colección de datos primero para eliminar el primer elemento usando un selector.

+0

Doh - buena captura. Fijo. –

2

Por qué no usar slice para eliminar el primero y luego usar $.each sin ninguna condición (que podría aumentar su rendimiento para gran conjunto de matrices)

var collection = data.collection.slice(0 , 1); 
$.each(collection,function() { 
    DoStuff(); 
}); 
Cuestiones relacionadas