$.each遍历json对象

  1. 遍历一维数组

      var arr1=['aa','bb','cc','dd'];
      $.each(arr1,function(i,val){ //两个参数,第一个参数表示遍历的数组的下标,第二个参数表示下标对应的值
      console.log(i+'```````'+val);
    

    输出的结果为:

     	0```````aa
     	1```````bb
        2```````cc
     	3```````dd
    
  2. 遍历二维数组

     var arr2=[['aaa','bbb'],['ccc','ddd'],['eee','fff']];
     $.each(arr2,function(i,item){ //两个参数,第一个参数表示下标,第二个参数表示一维数组中的每一个数组
      console.log(i+'````'+item);
    

    输出的结果为:

     0````aaa,bbb
     1````ccc,ddd
     2````eee,fff
    

    此时可以对输出的一维数组进行遍历

     $.each(item,function(i,val){  //遍历二维数组
               console.log(i+'`````'+val);
       })
    

    输出的结果为:

     0````aaa,bbb
         0`````aaa
         1`````bbb
     1````ccc,ddd
         0`````ccc
         1`````ddd
     2````eee,fff
         0`````eee
         1`````fff
    
  3. 处理json

      var json1={key1:'a',key2:'b',key3:'c'};
      $.each(json1,function(key,value){  //遍历键值对
                 console.log(key+'````'+value);
       })
    

    输出的结果为:

     key1````a
     key2````b
     key3````c
    
  4. 当二位数组中有json对象时

     	var arr3=[{name:'n1',age:18},{name:'n2',age:20},{name:'n3',age:22}];
             $.each(arr3,function(i,val){
                 console.log(i+'`````'+val);   
         //输出
         /* 0`````[object Object] 1`````[object Object] i2`````[object Object]*/
                 console.log(val.name); //获取每一个json里面的name值
                 console.log(val["name"]);
                 $.each(val,function(key,val2){
                     console.log(key+'```'+val2);
                 })
             });
    
  5. 处理dom元素

     <input name="aaa" type="hidden" value="111" />
     <input name="bbb" type="hidden" value="222" />
     <input name="ccc" type="hidden" value="333" />
     <input name="ddd" type="hidden" value="444"/>
    
     $.each($('input:hidden'),function(i,val){
             console.log(i+'````'+val);
             /*0````[object HTMLInputElement]
             1````[object HTMLInputElement]
             2````[object HTMLInputElement]
             3````[object HTMLInputElement]*/
             console.log(val.name+'`````'+val.value);
            /* aaa`````111
            bbb`````222
            ccc`````333
            ddd`````444*/
         })
    
  6. jQuery中还有另外一种写法来遍历元素

     $("input:hidden").each(function(i,val){  //第一个参数表示索引下标,第二个参数表示当前索引元素
         alert(i);
         alert(val.name);
         alert(val.value);       
     });
     或者
     var urls = "";
     $(".imgUrlVal").each(function(){
         urls += $(this).val()+",";
     });
    
  7. 查看一个简单的jQuery的例子来遍历一个JavaScript数组对象。

     var json = [
         {"id":"1","tagName":"apple"},
         {"id":"2","tagName":"orange"},
         {"id":"3","tagName":"banana"},
         {"id":"4","tagName":"watermelon"},
         {"id":"5","tagName":"pineapple"}
     ];
     $.each(json, function(idx, obj) {
         alert(obj.tagName);
     });
     //上面的代码片断工作正常,提示 “apple”, “orange” … 等,如预期一样。
    
  8. 问题: JSON 字符串
    下面的例子中,声明了一个JSON字符串(随附单或双引号)直接地。

    var json = '[{"id":"1","tagName":"apple"},{"id":"2","tagName":"orange"},
    			  {"id":"3","tagName":"banana"},{"id":"4","tagName":"watermelon"},
    			  {"id":"5","tagName":"pineapple"}]';
    $.each(json, function(idx, obj) {
        alert(obj.tagName);
    });
    

    在Chrome中,它显示在控制台下面的错误:

    Uncaught TypeError: Cannot use ‘in’ operator to search for ‘156’
    in [{“id”:“1”,“tagName”:“apple”}…
    解决方案:JSON字符串转换为JavaScript对象。
    要修复它,通过标准JSON.parse()或jQuery 的 $.parseJSON 将其转换为JavaScript对象。

    var json = '[{"id":"1","tagName":"apple"},{"id":"2","tagName":"orange"},
    			{"id":"3","tagName":"banana"},{"id":"4","tagName":"watermelon"},
    			{"id":"5","tagName":"pineapple"}]';
     
    $.each(JSON.parse(json), function(idx, obj) {
        alert(obj.tagName);
    });
     
    //or 
     
    $.each($.parseJSON(json), function(idx, obj) {
        alert(obj.tagName);
    });
    
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值