在数据表中使用对象而不是数组

时间:2016-01-12 20:08:43

标签: datatables

使用数据表时,表格中没有数据可供使用。当使用对象而不是数组时:

var data1 =
{
    "status": "success",
    "districts": {
        "1": {
            "district_number": "1",
            "district_name": "district one"
        },
        "2": {
            "district_number": "2",
            "district_name": "district two"
        }
    },
    "time": "1.109s"
};

var table1 = jQuery("#data_table1").DataTable({
    "data": data1.districts,
    "aoColumns": [
        { "mData": "district_number" },
        { "mData": "district_name" }    
    ]
});

我可以使用mData在数据表中显示数组,如下所示:

var data2 =
{
    "status": "success",
    "districts": [
        {
            "district_number": "1",
            "district_name": "district one"
        },
        {
            "district_number": "2",
            "district_name": "district two"
        }
    ],
    "time": "1.109s"
};

var table2 = jQuery("#data_table2").DataTable({
    "data": data2.districts,
    "aoColumns": [
        { "mData": "district_number" },
        { "mData": "district_name" }    
    ]
});

https://jsfiddle.net/w93gubLv/

有没有办法让数据表以原始格式使用对象,还是必须将对象转换为数组?

1 个答案:

答案 0 :(得分:1)

您可以编写自己的函数将一种格式转换为另一种格式,例如:

function formatData(data){
   var result = [];
   for(prop in data){
      if(data.hasOwnProperty(prop)){
         result.push( data[prop] );
      }
   }
   return result;
}

然后您可以使用它将数据传递给jQuery DataTables,如下所示。

var table1 = jQuery("#data_table1").DataTable({
    "data": formatData(data1.districts),
    "aoColumns": [
        { "mData": "district_number" },
        { "mData": "district_name" }    
    ]
});

请参阅updated jsFiddle以获取代码和演示。