javascript - 创建一个列,该列是数据表中其他两列的总和

标签 javascript jquery datatables

背景

我正在使用从 api 获取数据并显示它。 我想动态添加一列,该列是其他两列的总和。 例如,假设我想创建一个名为“随机”的列,该列将来自的数据相加 专栏已确认并且死亡我该怎么办?

HTML 代码

<table id="myTable"></table>
    <div id="loadingLabel">Loading...</div>

JS 代码

const getNewCases = async() => {
  const response = await fetch('https://covid19.mathdro.id/api/daily/3-18-2020');
  const data = await response.json();
  let usa = data.filter(val => {
    return val.countryRegion === 'US';
  });
  $('#loadingLabel').hide();
  $('#myTable').DataTable({
    data: usa,
    bLengthChange: false,
    bPaginate: false,
    scrollY:        '50vh',
    columns: [
      { data: 'provinceState', title: 'State' },
      { data: 'countryRegion', title: 'Country' },
      { data: 'lastUpdate', title: 'Last Update' },
      { data: 'confirmed', title: 'Confirmed' },
      { data: 'deaths', title: 'Deaths' },
      { data: 'recovered', title: 'Recovered' }
    ]
  });
};
getNewCases();

这里是JSFIDDLE

最佳答案

首先,我建议使用 DataTables ajax避免异步获取数据出现进一步问题的选项。

要解决您的主要问题,只需添加另一个列定义并使用 columns.data以函数作为参数的选项:

$('#myTable').DataTable({
  ajax: {
    url: 'https://covid19.mathdro.id/api/daily/3-18-2020',
    dataSrc: d => d.filter(entry => entry.countryRegion == 'US')
  },
  bLengthChange: false,
  bPaginate: false,
  scrollY:        '50vh',
  columns: [
    { data: 'provinceState', title: 'State' },
    { data: 'countryRegion', title: 'Country' },
    { data: 'lastUpdate', title: 'Last Update' },
    { data: 'confirmed', title: 'Confirmed' },
    { data: 'deaths', title: 'Deaths' },
    { data: 'recovered', title: 'Recovered' },
    { data: ({confirmed,deaths}) => Number(confirmed)+Number(deaths), title: 'Random' }
  ]
})
<!doctype html><html><head><link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/dt/jq-3.3.1/dt-1.10.18/rg-1.1.0/datatables.min.css" /><script type="application/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script><script type="text/javascript" src="https://cdn.datatables.net/v/dt/jq-3.3.1/dt-1.10.18/rg-1.1.0/datatables.min.js"></script><script src="https://cdn.datatables.net/buttons/1.5.6/js/dataTables.buttons.min.js"></script><script src="https://cdn.datatables.net/buttons/1.5.6/js/buttons.print.min.js"></script> </head><body><table id="myTable"></table></body></html>

关于javascript - 创建一个列,该列是数据表中其他两列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60781863/

相关文章:

javascript - 如何创建循环来构造一副完整牌组中的所有 52 张牌?

javascript - 突破代码不起作用。不知道怎么做数组

javascript - 如何在 html 上动态添加字段的 javascript 中匹配 id?

php - 文件上传ajax后向dataTable添加新行

javascript - jQuery 行取消选择的不同行为,我不明白为什么

javascript - 动态更改可搜索数据表列属性

javascript - 如何通过不显眼的验证更改 View 模型中 StringLength 属性的默认 ErrorMessage

javascript - 无法读取对象的子对象

jquery - 迭代选定的 jQuery 对象数组?

javascript - ToggleClass 和 RemoveClass 不起作用