获得最低和最低来自数据表选定行的最高日期值

时间:2016-07-07 13:37:32

标签: javascript jquery datatables


我有一种情况,我需要从按钮单击的数据表选定行中找到日期的最低和最高值(格式:'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);
});
  

这是工作demo

4 个答案:

答案 0 :(得分:1)

在循环选定的行时选择最小值和最大值。 Demo

  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);
  });

答案 1 :(得分:1)

您还可以跟踪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);
});

Forked Fiddle

答案 2 :(得分:0)

要实现此目的,您可以创建一个包含所有日期的新数组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);
});

Updated fiddle

答案 3 :(得分:0)

如在comment- make数组中所述,对它进行排序,获取第一个和最后一个元素:

// 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);
});