2009-09-08 16 views
19

Ho un elenco JSON che voglio iterare, ma saltare la prima voce, come in tal modo:

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

Tutte le idee?

risposta

36

È abbastanza buono?

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

brillante, grazie – mwjackson

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

o, probabilmente in modo più efficiente:

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

mi piace che, anche se la sua un po ' soluzione meno leggibile e quindi accettata. – mkoryak

+0

Mi piace soprattutto l'uso della slice (1). Molto efficiente. – thepriebe

2

È possibile utilizzare il buon vecchio approccio firstFlag:

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

Ma invece, mi consiglia che per prima cosa filtra la tua collezione di dati per rimuovere il primo oggetto usando un selettore.

+0

Doh: buona cattura. Fisso. –

2

Perché non utilizzare slice per rimuovere la prima uno e poi usare $.each senza alcuna condizione (che potrebbe aumentare le prestazioni per la grande serie di array)

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