从数据表选定行中获取最低和最高日期值

Get lowest & highest date values from datatables selected rows

本文关键字:高日期 日期 获取 数据表      更新时间:2023-09-26


我遇到一种情况,我需要在单击按钮时从数据表中的选定行中找到日期的最低和最高值(格式:"YYYY-MM-DD")。
我设法从另一列名为"总计"的列中获取值的总和,但正在努力计算最小和最大的日期值。

我的代码是:

// Show data in alert:
// for example: From 2016-06-02 to 2016-06-05: Total = xxxxx.xx
$('#showData').click(function() {
  var totalSUM = 0;
  $("table tbody tr.selected").each(function() {
    var getTotal = $(this).find("td:eq(1)").html();
    totalSUM += Number(getTotal);
  });
  alert('From "fromDate" to "toDate": Total = ' + totalSUM);
});

这是工作演示

您还可以跟踪minDate和maxDate,并在每次迭代时更新它们,就像您已经使用totalSUM一样。

$('#showData').click(function() {
  var totalSUM = 0, minDate, maxDate;
  $("table tbody tr.selected").each(function() {
    var getTotal = $(this).find("td:eq(1)").text(),
        date = $(this).find("td:eq(0)").text();
    totalSUM += Number(getTotal);
    minDate = !minDate || date < minDate ? date : minDate;
    maxDate = !maxDate || date > maxDate ? date : maxDate;
  });
  alert('From "fromDate" to "toDate": Total = ' + totalSUM + ' from ' + minDate + ' to ' + maxDate);
});

分叉小提琴

循环访问所选行时选取最小值和最大值。演示。

  var totalSUM = 0, minDate, maxDate;
  $("table tbody tr.selected").each(function() {
    var getTotal = $(this).find("td:eq(1)").html(),
        date = new Date($(this).find('td:eq(0)').text());
     if(!minDate || minDate > date) minDate = date;
     if(!maxDate || maxDate < date) maxDate = date;
    totalSUM += Number(getTotal);
  });

为此,您可以创建一个包含所有日期的新数组,sort()它,然后使用 pop()shift() 获取最新和最早的日期。试试这个:

$('#showData').click(function() {
    var totalSUM = 0;
    var dates = $("table tbody tr.selected").map(function() {
        totalSUM += parseFloat($(this).find("td:eq(1)").text());
        return new Date($(this).find('td:eq(0)').text());
    }).get().sort(function(a, b) { return b - a; });    
    var oldestDate = dates.pop();
    var newestDate = dates.shift();
    console.log(oldestDate);
    console.log(newestDate);
    console.log('From "fromDate" to "toDate": Total = ' + totalSUM);
});

更新的小提琴

如注释中所述 - 制作数组,对其进行排序,获取第一个和最后一个元素:

// Show data in alert:
// for example: From 2016-06-02 to 2016-06-05: Total = xxxxx.xx
$('#showData').click(function() {
  var totalSUM = 0,
      dateArray = new Array();
  $("table tbody tr.selected").each(function() {
    var getTotal = $(this).find("td:eq(1)").html(),
        currDate =  new Date($(this).find("td:eq(0)").html());
    totalSUM += Number(getTotal);
    dateArray.push(currDate.getTime());
  });
  dateArray.sort();
  var fromDate = new Date(dateArray[0]);
  var toDate = new Date(dateArray[dateArray.length-1]);
  alert('From '+fromDate.toLocaleDateString()+' to '+toDate.toLocaleDateString()+': Total = ' + totalSUM);
});