如何通过日期比较过滤js数组?

问题描述 投票:0回答:2

我有一个对象的js数组,每个对象都有一个StartDate属性。我需要按日期范围过滤数组。像这样的东西:

const matchesByDate = supplierPricingInfo.filter(x => x.StartDate > Date("12/25/2019"))

我尝试了上面的代码行,并将new关键字放在Date构造函数的前面。但是,即使数组中包含StartDate为01/01/2020的项目,此方法也不会返回任何结果。

那么,实现我在这里想要做什么的正确方法是什么?我正在项目中使用dayjs npm软件包,如果该软件包可以用来简化所有内容。

javascript
2个回答
0
投票

Javascript无法以您使用的格式提供您要实现的功能。相反,您可以做的是使用Date对象提供的其他功能。

Javascript Date对象具有一个<< [getTime”函数,该函数返回纪元(UNIX时间戳)。您可以从两个日期创建一个日期对象,并获取两个日期的UNIX时间戳进行比较。

let startDate = new Date("25/10/2019"); let tempDate = new Date("09/02/2020"); let isStartDateGreater = startDate.getTime() > tempDate.getTime(); // isStartDateGreater = false;
根据您的情况,您可以这样做

const matchesByDate = supplierPricingInfo.filter(x => new Date(x.StartDate).getTime() > new Date("12/25/2019").getTime())


0
投票
var datesArray = [new Date(2019, 11, 26), new Date(2020, 1, 23), new Date(2002, 5, 23)]; var comparisonDateTime = new Date(2019, 11, 25).getTime(); var matches = _.filter(datesArray, d => d.getTime() > comparisonDateTime); console.log(matches);
您可以使用getTime()方法获取通用时间并将其用作比较,然后使用下划线库中的filter方法仅返回通用时间大于您设置的通用时间的日期。在上面的示例中,我创建了三个示例日期,然后创建了一个比较时间,您将使用该时间来过滤日期。然后,我们使用filter方法并遍历每个日期,并仅在其通用时间大于您使用的比较时间时返回它。
© www.soinside.com 2019 - 2024. All rights reserved.