datatables对象的对象而不是对象数组

时间:2017-04-30 21:06:29

标签: jquery arrays datatables

我对js和数据表的整个区域都很陌生。

如何在数据表中表示

var data = {"jaxm":
    {
      "name": "Tiger Nixon",
      "position": "System Architect"
    },
    "jaxb" :
    {
     "name": "Garrett Winters",
     "position": "Accountant"
    }

}

我试过

$(duTable).DataTable({
    data:  data,
});

不确定这是否可能没有数组但是我甚至无法使用

打印数据表中的单行
$(duTable).DataTable({
    data:  data.jaxm,
});

1 个答案:

答案 0 :(得分:3)

你不能(简答)。上面更像是一个哈希表,或者一种关联数组:你有一个带有多个键(而不是索引)的对象,每个键都有一个对象。您需要将此类构造清理为索引数组:

function sanitizeData() {
  var d = [];
  Object.keys(data).forEach(function(key) {
    d.push(data[key]);
  });
  return d;
}

var table = $('#example').DataTable({
  data:  sanitizeData(),
  // **and** instruct dataTables which object property belongs to which column
  columns: [
    { data: 'name' },
    { data: 'position' }
  ]
})  

参见演示 - >的 http://jsfiddle.net/0c52ra0c/

它基本上只是

的算法版本
var table = $('#example').DataTable({
  data:  [data.jaxm, data.jaxb],
  columns: [
    { data: 'name' },
    { data: 'position' }
  ]
})  

也会这样做。因此,您可以使用data: [data.jaxm]作为最后一次尝试的解决方案"打印单行"。无论哪种方式,您都需要将索引数组传递给dataTables。