【问题标题】:How to limit an each loop on json data in jquery ?如何限制 jquery 中 json 数据的每个循环?
【发布时间】:2012-09-20 19:32:09
【问题描述】:

有没有一种很好的方法可以在每个循环中使用 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
});​

【问题讨论】:

    标签: jquery json each


    【解决方案1】:

    您也可以尝试使用 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);
         }
    

    【讨论】:

      【解决方案2】:
      $.each($(data).slice(0,3), function(i,item){
        console.log("\t",item.Id);
      });
      

      【讨论】:

        【解决方案3】:

        你可以试试这个

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

        DEMO.

        【讨论】:

        • 好吧,这将迭代数组中的所有元素。
        • @VisioN 不,不会。请参阅阿奎那的答案中的详细信息。
        【解决方案4】:
        $.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;
          }
        });
        

        【讨论】:

          【解决方案5】:
          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 时,每个都停止。

          来自文档:

          我们可以在特定的迭代中打破 $.each() 循环,方法是 回调函数返回假。返回非 false 与 a 相同 for 循环中的 continue 语句;它会立即跳到下一个 迭代。

          【讨论】:

            【解决方案6】:

            试试这个

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

            【讨论】:

            • 这比在3 increments of i?之后停止循环更快吗
            • 对于小的 json 对象应该没关系。如果你的 json 对象有大量数据怎么办。如果是这种情况,你就不需要循环了
            • 我完全同意你的说法;我只是出于好奇而问,以防你知道。
            • 如果每个都应用于 JSON 数组,则此方法有效。否则失败: Uncaught TypeError: Object # has no method 'slice' 如果 data = { "key1":"value1","key2":"value2","key3":"value3", "key4":"value4","key5":"value5" }
            • 是的,这是真的.. 它在这里很糟糕,因为它是一个对象数组
            猜你喜欢
            • 2017-05-10
            • 1970-01-01
            • 2023-03-13
            • 1970-01-01
            • 1970-01-01
            • 2017-08-04
            • 2013-04-08
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多