2009-09-08 13 views
19

Mam listę JSON, który chcę iteracyjne nad, ale pominąć pierwszy wpis, jak tak:

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

pomysłów?

Odpowiedz

36

Czy to wystarczy?

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

Brilliant dzięki – mwjackson

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

lub, prawdopodobnie bardziej efektywnie:

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

mi się podoba, choć jej nieco mniej czytelne, niż przyjęte rozwiązanie. – mkoryak

+0

Najbardziej lubię korzystanie z plasterka (1). Bardzo wydajny. – thepriebe

2

Można używać starego dobrego podejścia firstFlag:

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

ale zamiast tego, polecam, że najpierw filtrujesz kolekcję danych, aby usunąć pierwszy element za pomocą selektora.

+0

Doh - dobry połów. Naprawiony. –

2

Dlaczego nie używając slice usunąć pierwszy, a następnie użyć $.each bez kondycji (może to zwiększyć wydajność dużego zestawu tablic)

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