Javascript 数组-在两个日期之间进行筛选

Javascript 数组-在两个日期之间进行筛选,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

我有一个数组,两个日期选择器和一个按钮。在选择FROM日期和TO日期并单击按钮后,我想在两个选择日期之间筛选此数组,但不知何故它不起作用。请帮忙

HTML

从:到:应用

日期表
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()&&item
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"
];
函数可渲染(日期列表)
{
$('#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