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