簡體   English   中英

如何根據對象的日期屬性之間的范圍是否包括給定日期來過濾對象數組?

[英]How to filter an array of objects based on whether the range between their date properties includes a given 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 filtered = [{
  "S.NO": 3,
  "Full Name": "Doll",
  "Check In": "2020-04-02 11:19:48",
  "Check Out": "2020-04-02 15:19:58"
}];

我怎么做?

 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)

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

要過濾訪問者數據,首先確保兩個屬性內部都有值,然后使用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)

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

從數據中可以清楚地看出,退房時間可能有空值。 如果 Check Out 為空,您是否認為 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM