Javascript 如何迭代数据表中的特定列?
我有一个JSON文件,看起来像Javascript 如何迭代数据表中的特定列?,javascript,json,datatable,datatables,Javascript,Json,Datatable,Datatables,我有一个JSON文件,看起来像 [ { "Title": "Something", "FileName": "2014/mycollege/myvolume.pdf", "Course": "01 - Dangerous Book for Boys", "Year": "2014", "Category": "Ethics", "Group": "East Campus
[
{
"Title": "Something",
"FileName": "2014/mycollege/myvolume.pdf",
"Course": "01 - Dangerous Book for Boys",
"Year": "2014",
"Category": "Ethics",
"Group": "East Campus"
},
函数getMyEdMaterials(结果){ $.getJSON(“/materials/assets/json/materials.json”,函数(数据){ for(var输入数据){ datatableObject[data[key].Group]=datatableObject[data[key].Group]| |[]; datatableObject[data[key].Group].push(data[key]); datatableObject[“所有”]=datatableObject[“所有”]| |[]; datatableObject[“全部”].push(数据[键]); } for(datatableObject中的var键){ console.log(key.toLowerCase().replace(/\s/g,“-”)); log(datatableObject[key]); var tableInstance=$(“#”+key.toLowerCase().replace(/\s/g,“-”+“-table”).DataTable({ 宾福:是的, B过滤器:是的, 栏目:[{ 标题:“标题”, 宽度:“30%”, 呈现:函数(数据、类型、行){ 返回“”; } }, { 标题:“课程”, 宽度:“30%”, 数据:“课程” }, { 标题:“年”, 宽度:“10%”, //数据:“年” 呈现:函数(数据、类型、行){ //年=年推送(行.年); 返回行。年份; } }, { 标题:“类别”, 宽度:“5%”, 数据:“类别” }, { 标题:“文件名”, 宽度:“5%”, 数据:“文件名” }, { 标题:“集团”, 宽度:“5%”, 数据:“集团” } ], columnDefs:[{ 可见:假, 目标:[3,4,5] }], 数据:datatableObject[键], 是的, dom:“”, initComplete:function(){ this.api().columns(2).every(function()函数){ var列=此;
->>>从列中获取数据时遇到问题要获取数据,只需使用
tableInstance.column(3.data()
或者,如果要将其放入数组中
tableInstance.column(3.data().toArray()
你想实现什么?你在initComplete中做了一些循环,但实际目的是什么?我正在构建一个按钮栏,其中包含在DataTable上所做选择的所有年份啊,是的,有点,他在使用columns()
-注意复数形式。这个示例非常简单,但它返回第3列中的数据:$(document).ready(function(){var table=$('#example').DataTable({initComplete:function(){console.log(This.api().column(3).data().toArray());}});执行此操作时,我收到一个控制台错误。未捕获的TypeError:无法读取未定义的属性“column”您是否可以使用this.api().column(3)…
?如果在initComplete
中,请使用该属性,而不要使用tableInstance
。
function getMyEdMaterials(result) {
$.getJSON("/materials/assets/json/materials.json", function(data) {
for (var key in data) {
datatableObject[data[key].Group] = datatableObject[data[key].Group] || [];
datatableObject[data[key].Group].push(data[key]);
datatableObject["all"] = datatableObject["all"] || [];
datatableObject["all"].push(data[key]);
}
for (var key in datatableObject) {
console.log(key.toLowerCase().replace(/\s/g, "-"));
console.log(datatableObject[key]);
var tableInstance = $('#' + key.toLowerCase().replace(/\s/g, "-") + '-table').DataTable({
bInfo: true,
bFilter: true,
columns: [{
title: "Title",
width: "30%",
render: function(data, type, row) {
return "<a href=\"" + row.FileName + "\" target=\"_blank\">" + row.Title + "</a>";
}
},
{
title: "Course",
width: "30%",
data: "Course"
},
{
title: "Year",
width: "10%",
//data: "Year"
render: function(data, type, row) {
//year = year.push(row.Year);
return row.Year;
}
},
{
title: "Category",
width: "5%",
data: "Category"
},
{
title: "FileName",
width: "5%",
data: "FileName"
},
{
title: "Group",
width: "5%",
data: "Group"
}
],
columnDefs: [{
visible: false,
targets: [3, 4, 5]
}],
data: datatableObject[key],
deferRender: true,
dom: "<'toolbar'frltip >",
initComplete: function() {
this.api().columns(2).every(function() {
var column = this;
->>> having trouble getting the data from the column <<<---
if ((column == undefined) || (column == null)) {
console.log("data is null / undefined");
} else {
column.data().unique().sort().each(function(d, j) {
if ((d !== undefined) || (d !== null)) {
console.log(d + " is the year");
}
});
}
})
},
lengthMenu: [
[25, 50, 100, -1],
[25, 50, 100, "All"]
],
order: [
[2, 'desc'],
[3, 'asc'],
[1, 'asc'],
[0, 'asc']
],
orderMulti: true,
responsive: true,
});
}
})
};