【问题标题】:jquery get value inside array of arrayjquery获取数组数组中的值
【发布时间】:2019-07-26 11:18:36
【问题描述】:

我有以下函数,它以 json 的形式返回给我的值:

$.ajax({
            type: "GET",
            url: "<?php echo base_url() ?>Travel/get_kyc_details",
            datatype: 'JSON',
            success: function (data) {
                console.log(data);

                $.each(data, function (i, key) {
                    console.log(key);
                });



            }, error: function (data) {
            }
        });

返回的数据格式如下:

{
  "6": {   
    "phone_no_prefix": 254,
    "phone_no": 714339521,
    "contact_name": "Sammy Ojwang",
    "contact_phone_prefix": 254,
    "contact_phone": 77528578,
    "contact_email": "smjwang@gmail.com",
    "passport": "A1730170",
    "national_id": 28200148
  },
  "7": {  
    "phone_no_prefix": 254,
    "phone_no": 700000000,
    "contact_name": "Emergency One",
    "contact_phone_prefix": 254,
    "contact_phone": 7100000,
    "contact_email": "em@gmail.com",
    "passport": "A189234",
    "national_id": 12345678
  },
  "8": { 
    "phone_no_prefix": 254,
    "phone_no": 711111111,
    "contact_name": "Emergency Two",
    "contact_phone_prefix": 254,
    "contact_phone": 7130000,
    "contact_email": "em2@gmail.com",
    "passport": "A8765432",
    "national_id": 981234
  }
}

但是,当我尝试使用以下格式循环遍历它时,它会失败:

$.each(data, function (i, key) {
                    console.log(key);
                });

以下是我得到的错误:

Uncaught TypeError: Cannot use 'in' operator to search for 'length' in {"9":

如何循环并检索以下数据: phone_no_prefix、contact_name、national_id、contact_email 等?

【问题讨论】:

  • 这不是一个数组,而是一个键值对对象。另一种$.each(Object.entries(data), function (i, [key,value]) { console.log(key, '/', value); });

标签: javascript jquery arrays json


【解决方案1】:

我能够使用相同的方法迭代和打印值:

var data = {
  "6": {   
    "phone_no_prefix": 254,
    "phone_no": 714339521,
    "contact_name": "Sammy Ojwang",
    "contact_phone_prefix": 254,
    "contact_phone": 77528578,
    "contact_email": "smjwang@gmail.com",
    "passport": "A1730170",
    "national_id": 28200148
  },
  "7": {  
    "phone_no_prefix": 254,
    "phone_no": 700000000,
    "contact_name": "Emergency One",
    "contact_phone_prefix": 254,
    "contact_phone": 7100000,
    "contact_email": "em@gmail.com",
    "passport": "A189234",
    "national_id": 12345678
  },
  "8": { 
    "phone_no_prefix": 254,
    "phone_no": 711111111,
    "contact_name": "Emergency Two",
    "contact_phone_prefix": 254,
    "contact_phone": 7130000,
    "contact_email": "em2@gmail.com",
    "passport": "A8765432",
    "national_id": 981234
  }
}

$.each(data, function(key,value){ console.log(value) });

【讨论】:

    【解决方案2】:

    如果你必须支持 IE 浏览器,你必须遍历 Object.keys,然后使用这些键做任何你需要的事情:

    const data = {
      "6": {   
        "phone_no_prefix": 254,
        "phone_no": 714339521,
        "contact_name": "Sammy Ojwang",
        "contact_phone_prefix": 254,
        "contact_phone": 77528578,
        "contact_email": "smjwang@gmail.com",
        "passport": "A1730170",
        "national_id": 28200148
      },
      "7": {  
        "phone_no_prefix": 254,
        "phone_no": 700000000,
        "contact_name": "Emergency One",
        "contact_phone_prefix": 254,
        "contact_phone": 7100000,
        "contact_email": "em@gmail.com",
        "passport": "A189234",
        "national_id": 12345678
      },
      "8": { 
        "phone_no_prefix": 254,
        "phone_no": 711111111,
        "contact_name": "Emergency Two",
        "contact_phone_prefix": 254,
        "contact_phone": 7130000,
        "contact_email": "em2@gmail.com",
        "passport": "A8765432",
        "national_id": 981234
      }
    };
    
    Object.keys(data).forEach(function(key){
    	console.log(data[key]);
    });

    这是一种原生 js ES5 方法,适用于所有浏览器,不需要 jQuery 方法。

    【讨论】:

      猜你喜欢
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 2016-12-24
      相关资源
      最近更新 更多