[英]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.