Javascript Datatables-从页脚计算中省略某些行
我有一个计算页脚中所有行总数的表。我的问题是,我可以根据条件省略某些行吗 例如,我有一个棒球运动员的赛季统计数据,他们的职业生涯总计在页脚处。 这位球员在2018赛季为两支不同的球队效力。这可以通过联赛Javascript Datatables-从页脚计算中省略某些行,javascript,jquery,datatables,Javascript,Jquery,Datatables,我有一个计算页脚中所有行总数的表。我的问题是,我可以根据条件省略某些行吗 例如,我有一个棒球运动员的赛季统计数据,他们的职业生涯总计在页脚处。 这位球员在2018赛季为两支不同的球队效力。这可以通过联赛league字段中的TOTAL来表示,我在该字段中添加了他在该赛季各球队的综合统计数据。 因此,看看下面的表格,您应该注意: 2017赛季,他在《STL》中获得了1支《代码》热门歌曲 2018赛季,他有15支安打(5支安打属于LAD,10支安打属于BAL) 考虑到这一点,你应该看到他在页脚的职业生
league
字段中的TOTAL
来表示,我在该字段中添加了他在该赛季各球队的综合统计数据。
因此,看看下面的表格,您应该注意:
2017赛季,他在《STL》中获得了1支《代码》热门歌曲
2018赛季,他有15支安打(5支安打属于LAD
,10支安打属于BAL
)
考虑到这一点,你应该看到他在页脚的职业生涯总数没有正确计算。他的职业生涯应该是16岁,而不是31岁。
因此,为了理顺这一点,我想将LEAGUE
列中包含TOTAL
的所有行从页脚合计中删除。我该怎么做?这里的任何帮助都将不胜感激。谢谢
YEAR Name AGE TEAM LEAGUE HITS
2017 John Smith 25 STL NL 1
2018 John Smith 26 TOTAL 15
2018 John Smith 26 LAD NL 5
2018 John Smith 26 BAL AL 10
Career Total 31
这是我的密码
<div align="center">
<table id = 'battingtbl' class="display compact nowrap">
<thead>
<tr>
<th>YEAR</th>
<th>NAME</th>
<th>AGE</th>
<th>TEAM</th>
<th>LEAGUE</th>
<th>HITS</th>
</tr>
</thead>
<tbody>
{% for stat in playerdata.bbhittingstatsmstr_set.all %}
<tr>
<td>{{ stat.year }}</td>
<td>{{ stat.name }}</td>
<td>{{ stat.age }}</td>
<td>{{ stat.team }}</td>
<td>{{ stat.league }}</td>
<td>{{ stat.hits }}</td>
</tr>
{% endfor %}
</tbody>
<tfoot>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</tfoot>
</table>
<script>
$(document).ready(function () {
$('#battingtbl').DataTable({
"searching": true,
"pageLength": 40,
"scrollX": true,
"paging": false,
"info": false,
drawCallback: () => {
const table = $('#battingtbl').DataTable();
const tableData = table.rows({
search: 'applied'
}).data().toArray();
const totals = tableData.reduce((total, rowData) => {
total[0] += parseFloat(rowData[5]); <!--HITS -->
return total;
}, [0,0,0,0,0,0]);
$(table.column(5).footer()).text(totals[0]); <!--HITS -->
}
})
});
</script>
年
名称
年龄
团队
联合会
击打
{playerdata.bbhittingstatsmstr_set.all%中的stat为%
{{stat.year}
{{stat.name}}
{{stat.age}}
{{stat.team}}
{{stat.league}
{{stat.hits}}
{%endfor%}
$(文档).ready(函数(){
$('#BattingBL')。数据表({
“搜索”:没错,
“页面长度”:40,
“scrollX”:正确,
“分页”:false,
“信息”:错误,
drawCallback:()=>{
常量表=$('#battingbl')。数据表();
const tableData=table.rows({
搜索:“已应用”
}).data().toArray();
const totals=tableData.reduce((总计,行数据)=>{
总计[0]+=parseFloat(行数据[5]);
返回总数;
}, [0,0,0,0,0,0]);
$(table.column(5).footer()).text(总计[0]);
}
})
});
在表格数据中添加if语句。reduce
调用:
const totals = tableData.reduce((total, rowData) => {
if (rowData[4] !== 'TOTAL') {
total[0] += parseFloat(rowData[5]); <!--HITS -->
}
return total;
}, [0,0,0,0,0,0]);
$(table.column(5).footer()).text(totals[0]); <!--HITS -->
const totals=tableData.reduce((总计,行数据)=>{
如果(行数据[4]!==‘总计’){
总计[0]+=parseFloat(行数据[5]);
}
返回总数;
}, [0,0,0,0,0,0]);
$(table.column(5).footer()).text(总计[0]);
还可以简化reduce调用的初始值(第3个参数):
//totals是一个数字而不是数组
const totals=tableData.reduce((总计,行数据)=>{
如果(行数据[4]!==‘总计’){
总计+=parseFloat(行数据[5]);
}
返回总数;
}, 0);
$(表.column(5).footer()).text(总计);
仍不能正常工作。当我离开.toArray()时,我在HITS列中得到0。如果我只是复制和粘贴你拥有的东西,并将其保留,我在页脚中什么都没有(甚至连0都没有)我这样做对吗。它似乎对我不起作用。我只是发现我的代码中有一个错误-对此感到抱歉。我更新了代码-再次尝试第二个代码段。成功了!万分感谢!
// totals is a Number not an Array
const totals = tableData.reduce((total, rowData) => {
if (rowData[4] !== 'TOTAL') {
total += parseFloat(rowData[5]); <!--HITS -->
}
return total;
}, 0);
$(table.column(5).footer()).text(totals);