9

有没有一种很好的方法可以使用 jquery 每个循环仅循环 json 对象的前 3 项?

我正在考虑等效于.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
});​
4

6 回答 6

31
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;
});​

当您返回 false 时,每个都停止。

从文档:

通过使回调函数返回 false,我们可以在特定迭代中打破 $.each() 循环。返回非 false 与 for 循环中的 continue 语句相同;它将立即跳到下一次迭代。

于 2012-09-28T22:20:40.390 回答
8

尝试这个

$.each(data.slice(0,3), function(i, item) {
    alert(item.PageName);
});​
于 2012-09-28T22:19:02.910 回答
2

你可以试试这个

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

演示

于 2012-09-28T22:18:13.460 回答
0
$.each($(data).slice(0,3), function(i,item){
  console.log("\t",item.Id);
});
于 2012-09-28T22:31:02.673 回答
0

您也可以尝试使用 for 循环遍历它

这是怎么做的

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

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

     }

并遍历整个 Json 数组使用以下

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

         alert("Id is"+d[i].id);
     }
于 2012-09-28T22:40:08.790 回答
-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;
  }
});
于 2012-09-28T22:24:58.153 回答