Javascript 数组-在两个日期之间进行筛选
我有一个数组,两个日期选择器和一个按钮。在选择FROM日期和TO日期并单击按钮后,我想在两个选择日期之间筛选此数组,但不知何故它不起作用。请帮忙 HTMLJavascript 数组-在两个日期之间进行筛选,javascript,jquery,html,Javascript,Jquery,Html,我有一个数组,两个日期选择器和一个按钮。在选择FROM日期和TO日期并单击按钮后,我想在两个选择日期之间筛选此数组,但不知何故它不起作用。请帮忙 HTML 从:到:应用 日期表 JS $(“.datepicker”).datepicker(); var dateFrm=$('#dateFrom').val(); var datTo=$('#dateTo').val(); $('.buttApply')。单击( 函数() { 排序(函数(dateFrm,datTo) { 返回日期FRM>datT
从:到:应用
日期表
JS
$(“.datepicker”).datepicker();
var dateFrm=$('#dateFrom').val();
var datTo=$('#dateTo').val();
$('.buttApply')。单击(
函数()
{
排序(函数(dateFrm,datTo)
{
返回日期FRM>datTo;
}
);
}
);
变量日期表=[
"07/01/2014",
"07/02/2014",
"07/03/2014",
"07/04/2014",
"07/05/2014",
"07/06/2014",
"07/07/2014",
"07/08/2014",
"07/09/2014",
"07/10/2014",
];
对于(var i=0;i
我想您可能需要使用该功能
filter()方法使用通过的所有元素创建一个新数组
由提供的函数实现的测试
此外,以下是对代码的一些修改:
$(".datepicker").datepicker();
$('.buttApply').click(
function () {
// Retrieve your dateForm and dateTo value here, otherwise your dateFrm and datTo will be equal to ''.
// Also, use filter instead of sort. The filtered variable is your new array.
var filtered = dateList.filter(function (item) {
return item >= $('#dateFrom').val() && item <= $(
'#dateTo').val();
});
// Refresh your table
refreshTable(filtered);
}
);
var dateList = [
"07/01/2014",
"07/02/2014",
"07/03/2014",
"07/04/2014",
"07/05/2014",
"07/06/2014",
"07/07/2014",
"07/08/2014",
"07/09/2014",
"07/10/2014",
];
function refreshTable(list) {
$("#myTable").html("");
for (var i = 0; i < list.length; i++) {
var tr = "<tr>";
var td = "<td>" + list[i] + "</td></tr>";
$('#myTable').append(tr + td);
}
}
refreshTable(dateList);
$(“.datepicker”).datepicker();
$('.buttApply')。单击(
函数(){
//在此处检索dateForm和dateTo值,否则dateFrm和datTo将等于“”。
//另外,使用filter而不是sort。过滤后的变量是您的新数组。
var filtered=dateList.filter(函数(项){
返回项>=$('#dateFrom').val()&&itemvar-dateList=[
"07/01/2014"
, "07/02/2014"
, "07/03/2014"
, "07/04/2014"
, "07/05/2014"
, "07/06/2014"
, "07/07/2014"
, "07/08/2014"
, "07/09/2014"
, "07/10/2014"
];
函数可渲染(日期列表)
{
$('#myTable').html('');
对于(var i=0;i=unixtime\u from&&unixtime使用矩.js
例如:
var startDate = new Date(2013, 1, 12)
, endDate = new Date(2013, 1, 15)
, date = new Date(2013, 2, 15)
, range = moment().range(startDate, endDate);
range.contains(date); // false
你的意思是在两个日期之间过滤数组吗?你将如何在两天之间排序!谢谢你的关心。是的,过滤
例如,如果我选择的是2014年1月7日,我选择的是2014年6月7日,点击按钮,我将得到一个列表2014年1月7日,2014年2月7日……2014年6月7日非常感谢你,Antoine!是的,过滤是一个正确的功能r这个任务。你好,安托万,需要你的解释。我看到你有var filtered=dateList.filter(函数(项)
,为什么我们不先定义item
?然后,你有function refreshttable(列表)
,list
从哪里来?最后,你有refreshttable(日期列表)
,我看到数组中有var dateList
,但没有表dateList
!我很困惑。请澄清。谢谢!函数(项){
是过滤器函数为数组中的每个元素调用的回调函数,项
只是与数组中的一个项对应的参数名。函数刷新表(列表)
列表
只是参数名,当我们调用刷新表(日期列表)时
,日期列表
作为列表
参数的参数传递。谢谢您!是的,它可以工作,如果更改日期列表元素也可以工作。谢谢!
$(".datepicker").datepicker();
$('.buttApply').click(
function () {
// Retrieve your dateForm and dateTo value here, otherwise your dateFrm and datTo will be equal to ''.
// Also, use filter instead of sort. The filtered variable is your new array.
var filtered = dateList.filter(function (item) {
return item >= $('#dateFrom').val() && item <= $(
'#dateTo').val();
});
// Refresh your table
refreshTable(filtered);
}
);
var dateList = [
"07/01/2014",
"07/02/2014",
"07/03/2014",
"07/04/2014",
"07/05/2014",
"07/06/2014",
"07/07/2014",
"07/08/2014",
"07/09/2014",
"07/10/2014",
];
function refreshTable(list) {
$("#myTable").html("");
for (var i = 0; i < list.length; i++) {
var tr = "<tr>";
var td = "<td>" + list[i] + "</td></tr>";
$('#myTable').append(tr + td);
}
}
refreshTable(dateList);
var dateList = [
"07/01/2014"
, "07/02/2014"
, "07/03/2014"
, "07/04/2014"
, "07/05/2014"
, "07/06/2014"
, "07/07/2014"
, "07/08/2014"
, "07/09/2014"
, "07/10/2014"
];
function renderTable( dateList )
{
$('#myTable').html('');
for (var i=0; i< dateList.length; i++)
{
var tr="<tr>";
var td = "<td>" + dateList[i] + "</td></tr>";
$('#myTable').append(tr+td);
}
}
// If you need to change dateList element format,
// just only change this convert function.
function DateToUnixtime( date_string )
{
return new Date(date_string).getTime() / 1000;
}
$('.buttApply').click(function()
{
var unixtime_from = $('#dateFrom').datepicker('getDate').getTime() / 1000;
var unixtime_to = $('#dateTo').datepicker('getDate').getTime() / 1000;
var dateListFiltered = dateList.filter(function(date)
{
var unixtime = DateToUnixtime( date );
return unixtime >= unixtime_from && unixtime <= unixtime_to;
});
renderTable( dateListFiltered );
});
$( ".datepicker" ).datepicker();
renderTable( dateList );
var startDate = new Date(2013, 1, 12)
, endDate = new Date(2013, 1, 15)
, date = new Date(2013, 2, 15)
, range = moment().range(startDate, endDate);
range.contains(date); // false