DataTables footerCallback – 以另一个单元格为条件

我正在尝试在DataTables中实现一个footerCallback,它根据同一行中不同列中的单元格计算每列的条件和。 这是我的设置演示: https : //jsfiddle.net/rantoun/552y9j90/13/

HTML:

Fruit sumCondition # Eaten # Remaining
Count
Apples Use 3 8
Oranges Use 6 5
Bananas Ignore 2 9

jQuery的:

 $("#table1").DataTable({ "paging": false, "searching": false, "info": false, "footerCallback": function ( row, data, start, end, display ) { var columns = [2, 3]; var api = this.api(); _.each(columns, function(idx) { var total = api .column(idx) .data() .reduce(function (a, b) { return parseInt(a) + parseInt(b); }, 0) $('tr:eq(0) th:eq('+idx+')', api.table().footer()).html(total); }) } }); 

具体来说,我的目标是footerCallback只对“条件”列中“忽略”不在的行进行求和。 希望这是明确的,任何帮助表示赞赏。

我通过在reduce函数中获取求和值的当前索引来解决这个问题,然后使用索引来访问条件单元格中的相应值。 下面是新的jQuery代码:

 $("#table1").DataTable({ "paging": false, "searching": false, "info": false, "footerCallback": function ( row, data, start, end, display ) { var columns = [2, 3]; //console.log(data); var api = this.api(); // Get sumCondition and put in array _.each(columns, function(idx) { var total = api .column(idx) .data() .reduce(function (a, b) { // Find index of current value for accessing sumCondition value in same row var cur_index = api.column(idx).data().indexOf(b); if (api.column(1).data()[cur_index] != "Ignore") { return parseInt(a) + parseInt(b); } else { return parseInt(a); } }, 0) $('tr:eq(0) th:eq('+idx+')', api.table().footer()).html(total); }) 

}};

工作小提琴: https //jsfiddle.net/rantoun/552y9j90/14/