为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据日期属性之间的范围是否包含给定日期来过滤对象数组?

如何根据日期属性之间的范围是否包含给定日期来过滤对象数组?

心有法竹 2022-12-02 16:06:30
如何根据日期范围是否包含特定日期来过滤日期范围?let visitors = [{  "S.NO": 1,  "Full Name": "Boss",  "Check In": "2020-04-21 01:51:49",  "Check Out": ""}, {  "S.NO": 2,  "Full Name": "John",  "Check In": "2020-04-19 11:21:17",  "Check Out": "2020-04-19 12:21:26"}, {  "S.NO": 3,  "Full Name": "Doll",  "Check In": "2020-04-02 11:19:48",  "Check Out": "2020-04-02 15:19:58"}];我想在以下日期之前过滤上面的数据:let knowntime = "2020-04-02 13:20:22";这是我正在寻找的结果:let filtered = [{  "S.NO": 3,  "Full Name": "Doll",  "Check In": "2020-04-02 11:19:48",  "Check Out": "2020-04-02 15:19:58"}];我怎么做?
查看完整描述

5 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

let visitors=[ { "S.NO": 1, "Full Name": "Boss", "Check In": "2020-04-21 01:51:49", "Check Out": "" }, { "S.NO": 2, "Full Name": "John", "Check In": "2020-04-19 11:21:17", "Check Out": "2020-04-19 12:21:26" }, { "S.NO": 3, "Full Name": "Doll", "Check In": "2020-04-02 11:19:48", "Check Out": "2020-04-02 15:19:58" } ];

let knowntime="2020-04-02 13:20:22";

res=visitors.filter(o => o["Check In"].localeCompare(knowntime) < 0 && o["Check Out"].localeCompare(knowntime)>0)

console.log(res)


查看完整回答
反对 回复 2022-12-02
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

let visitors=[

  {

    "S.NO": 1,

    "Full Name": "Boss",

    "Check In": "2020-04-21 01:51:49",

    "Check Out": ""

  },

  {

    "S.NO": 2,

    "Full Name": "John",

    "Check In": "2020-04-19 11:21:17",

    "Check Out": "2020-04-19 12:21:26"

  },

  {

    "S.NO": 3,

    "Full Name": "Doll",

    "Check In": "2020-04-02 11:19:48",

    "Check Out": "2020-04-02 15:19:58"

  }

];

let knowntime="2020-04-02 13:20:22";

const dateToBeFiltered=new Date(knowntime);

const filterdVisitors= visitors.filter((elem)=>{


const checinTime=new Date(elem["Check In"]);

const checkOutTime=new Date(elem["Check Out"]);

return (checinTime<=dateToBeFiltered && dateToBeFiltered<=checkOutTime);


});

console.log(filterdVisitors);


查看完整回答
反对 回复 2022-12-02
?
噜噜哒

TA贡献1784条经验 获得超7个赞

从数据中可以清楚地看出,结账时间可能有空值。如果它是空的,您是否应该考虑 Check Out 大于给定时间。


这是代码


   let visitors = [

  {

    "S.NO": 1,

    "Full Name": "Boss",

    "Check In": "2020-04-21 01:51:49",

    "Check Out": ""

  },

  {

    "S.NO": 2,

    "Full Name": "John",

    "Check In": "2020-04-19 11:21:17",

    "Check Out": "2020-04-19 12:21:26"

  },

  {

    "S.NO": 3,

    "Full Name": "Doll",

    "Check In": "2020-04-02 11:19:48",

    "Check Out": "2020-04-02 15:19:58"

  }

];

let knowntime = "2020-04-02 13:20:22";


let filteredVisitors =  visitors.filter((visitor) => {

  return (new Date(visitor['Check In']) <= new Date(knowntime) && (visitor['Check Out'] === '' || new Date(visitor['Check Out']) >= new Date(knowntime)))

})


console.log(filteredVisitors)


查看完整回答
反对 回复 2022-12-02
?
动漫人物

TA贡献1815条经验 获得超10个赞

let visitors = [{

  "S.NO": 1,

  "Full Name": "Boss",

  "Check In": "2020-04-21 01:51:49",

  "Check Out": ""

}, {

  "S.NO": 2,

  "Full Name": "John",

  "Check In": "2020-04-19 11:21:17",

  "Check Out": "2020-04-19 12:21:26"

}, {

  "S.NO": 3,

  "Full Name": "Doll",

  "Check In": "2020-04-02 11:19:48",

  "Check Out": "2020-04-02 15:19:58"

}];


let knowntime = "2020-04-02 13:20:22";


let filtered = visitors.filter(visitor => {

  return visitor['Check In'] < knowntime && visitor['Check Out'] > knowntime;

});


console.log(filtered);

您也可以像这样写一个单行代码:

let filtered = visitors.filter(({ ['Check In']: a, ['Check Out']: b }) => a < knowntime && b > knowntime);



查看完整回答
反对 回复 2022-12-02
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

要过滤访问者数据,首先确保两个属性都包含值,然后将值转换为日期格式new Date(),然后进行比较。


   let visitors = [

      {

        "S.NO": 1,

        "Full Name": "Boss",

        "Check In": "2020-04-21 01:51:49",

        "Check Out": ""

      },

      {

        "S.NO": 2,

        "Full Name": "John",

        "Check In": "2020-04-19 11:21:17",

        "Check Out": "2020-04-19 12:21:26"

      },

      {

        "S.NO": 3,

        "Full Name": "Doll",

        "Check In": "2020-04-02 11:19:48",

        "Check Out": "2020-04-02 15:19:58"

      }

    ];

    let knowntime = "2020-04-02 13:20:22";


    let filteredVisitors =  visitors.filter((visitor) => {

      return (visitor['Check In'] && visitor['Check Out'] &&

        (new Date(visitor['Check In']) <= new Date(knowntime) && new Date(visitor['Check Out']) >= new Date(knowntime)))

    })


    console.log(filteredVisitors)


查看完整回答
反对 回复 2022-12-02
  • 5 回答
  • 0 关注
  • 238 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号