2009-09-08 7 views
19

J'ai une liste de JSON que je veux itérer, mais sauter la première entrée, comme ainsi:

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

Toutes les idées?

Répondre

36

Est-ce suffisant?

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

Brillant, merci – mwjackson

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

ou, probablement plus efficacement:

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

j'aime ça, même si son peu solution moins lisible puis acceptée. – mkoryak

+0

J'aime surtout l'utilisation de la tranche (1). Très efficace. – thepriebe

2

Vous pouvez utiliser la bonne vieille approche firstFlag:

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

Mais au lieu, je recommande que vous filtrez d'abord votre collection de données pour supprimer le premier élément à l'aide d'un sélecteur.

+0

Doh - bonne prise. Fixé. –

2

Pourquoi ne pas utiliser slice pour enlever le premier puis utilisez $.each sans aucune condition (il pourrait augmenter vos performances pour un grand ensemble de tableaux)

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