我正在使用DataTables计算列中的所有行,并将总计显示在表的页脚中。
这是问题所在:看来,只要我要计算的列的任何行中都有空值,总和就会显示为NaN。
如何使DataTables忽略列中的空值,而只求和非空值?
<div align="center">
<table id = 'mytabl' class="display compact nowrap">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
</tr>
</thead>
<tbody>
{% for num in numberdata.mytable_set.all %}
<tr>
<td>{{ num.col1 }}</td>
<td>{{ num.col2 }}</td>
</tr>
{% endfor %}
</tbody>
<tfoot>
<tr>
<th></th>
<th></th>
</tr>
</tfoot>
</table>
<script>
$(document).ready(function() {
$('#mytabl').DataTable({
"searching": true,
"pageLength": 40,
"scrollX": true,
"paging": false,
"info": false,
drawCallback: () => {
const table = $('#mytabl').DataTable();
const tableData = table.rows({
search: 'applied'
}).data().toArray();
const totals = tableData.reduce((total, rowData) => {
total[0] += parseFloat(rowData[1]);
total[1] += parseFloat(rowData[2]);
return total;
}, [0, 0]);
$(table.column(1).footer()).text(totals[0]);
$(table.column(2).footer()).text(totals[1]);
}
})
});
</script>
答案 0 :(得分:1)
const totals = tableData.reduce((total, rowData) => {
total[0] += rowData[1] ? parseFloat(rowData[1]) : 0;
total[1] += rowData[2] ? parseFloat(rowData[2]) : 0;
return total;
}
如果该值为空,如何将其加零