簡體   English   中英

如何過濾兩個日期之間的對象數組?

[英]How can I filter an array of objects between two dates?

除了偶爾的 jQuery 選擇器和元素修改之外,我在 javascript 方面不太擅長。對於我遇到的問題,我需要按日期過濾掉 javascript object。 我有一個看起來像這樣的結構:

Object { version: "3.1.1", released_on: "2016-08-21T00:00:00.000Z", high_vulns: 15, medium_vulns: 10, low_vulns: 5 }

我想在"2016-08-21T00:00:00.000Z""2010-08-21T00:00:00.000Z"之間找到 10 年的所有對象 我遇到的問題是released_on:字段是一個字符串而不是日期。 我需要創建一個new Date() object 將其轉換為字符串,然后使用.filter還是相反,將字符串轉換為日期然后進行過濾。 有沒有人嘗試過這樣的事情?

您可以執行以下操作;

 var data = [{ version: "3.1.1", released_on: "2016-08-21T00:00:00.000Z", high_vulns: 15, medium_vulns: 10, low_vulns: 5 }, { version: "3.1.1", released_on: "2011-08-21T00:00:00.000Z", high_vulns: 15, medium_vulns: 10, low_vulns: 5 }, { version: "3.1.1", released_on: "2009-08-21T00:00:00.000Z", high_vulns: 15, medium_vulns: 10, low_vulns: 5 }, { version: "3.1.1", released_on: "2006-08-21T00:00:00.000Z", high_vulns: 15, medium_vulns: 10, low_vulns: 5 }, { version: "3.1.1", released_on: "2013-08-21T00:00:00.000Z", high_vulns: 15, medium_vulns: 10, low_vulns: 5 }, { version: "3.1.1", released_on: "2017-08-21T00:00:00.000Z", high_vulns: 15, medium_vulns: 10, low_vulns: 5 }, { version: "3.1.1", released_on: "2015-08-21T00:00:00.000Z", high_vulns: 15, medium_vulns: 10, low_vulns: 5 }, ], ed = new Date("2016-08-21T00:00:00.000Z").getTime(), sd = new Date("2010-08-21T00:00:00.000Z").getTime(), result = data.filter(d => {var time = new Date(d.released_on).getTime(); return (sd < time && time < ed); }); console.log(result); 

export const filterBetweenDates = (data, setState, fromDate, toDate) => {
  try {
    setState(data.filter(({ date }) => date >= fromDate && date <= toDate));
  } catch (error) {
    console.log('error while filtering by dates', error.message);
  }
};

暫無
暫無

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

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