2012-09-28 7 views
6

Czy istnieje dobry sposób na zapętlenie tylko trzech pierwszych elementów obiektu Json przy użyciu jQuery w każdej pętli?Jak ograniczyć pętlę dla danych json w jquery?

Mam na myśli odpowiednik funkcji .slice(start,end).

var data = [ 
{"Id": 10004, "PageName": "club"}, 
{"Id": 10040, "PageName": "qaz"}, 
{"Id": 10059, "PageName": "ee"}, 
{"Id": 10089, "PageName": "dd"}, 
{"Id": 10095, "PageName": "hh"} 
]; 

$.each(data, function(i, item) { 
    alert(item.PageName); 
    // somehow break at item 3 
});​ 

Odpowiedz

27
var data = [ 
{"Id": 10004, "PageName": "club"}, 
{"Id": 10040, "PageName": "qaz"}, 
{"Id": 10059, "PageName": "ee"}, 
{"Id": 10089, "PageName": "dd"}, 
{"Id": 10095, "PageName": "hh"} 
]; 

$.each(data, function(i, item) { 
    alert(item.PageName); 
    return i<2; 
});​ 

każdy zatrzymuje się, gdy return false.

Od docs:

We can break the $.each() loop at a particular iteration by making the callback function return false. Returning non-false is the same as a continue statement in a for loop; it will skip immediately to the next iteration.

2

Możesz spróbować tego

$.each(data, function(i, item) { 
    if(i>2) return false; 
    alert(item.PageName); 
});​ 

DEMO.

+2

Cóż, to spowoduje powtórzenie wszystkich elementów w tablicy. – VisioN

+0

@VisioN Nie, nie będzie. Zobacz szczegóły w odpowiedzi aquinas. – Barmar

+1

@Barmar Aktualna odpowiedź została zaktualizowana. Zobacz wersje. – VisioN

7

Spróbuj

$.each(data.slice(0,3), function(i, item) { 
    alert(item.PageName); 
});​ 
+0

Czy jest to szybsze niż samo zatrzymanie pętli po '3 krokach i?' – Ohgodwhy

+0

Nie powinno to mieć znaczenia dla małych obiektów json. Co jeśli twój obiekt Json ma dużą ilość danych. Jeśli tak jest, to niepotrzebnie zapętlasz się przez –

+0

Zgadzam się całkowicie z Twoim oświadczeniem; Poprosiłem tylko o ciekawość, o której wiesz. – Ohgodwhy

-1
$.each(data, function(i){ 
    //i is 0 based, so 3 is really 2. 
    if(i == 2){ 
     //exit the loop on the 3rd iteration of the object. 
     return false; 
    } 
}); 
0
$.each($(data).slice(0,3), function(i,item){ 
    console.log("\t",item.Id); 
}); 
0

Można także spróbować pętli przez niego za pomocą pętli for

oto jak to zrobić

 for(var i =0;i<3;i++){ 

     alert("Id is"+d[i].id) ; 

    } 

I aby przechodzić przez całą tablicę Json, skorzystaj z poniższych

 for(var i =0;i<d.length;i++){ 

     alert("Id is"+d[i].id); 
    }