javascript - 比较和过滤对象中的日期属性
问题描述
我有一个看起来像这样的对象:
myObject = {
publishedDate: string;
Url: string;
Title: string;
}
属性“publishedDate”是格式为“19/01/2021”的字符串。例如,它可以有一个未来的日期,即大于今天的值。换句话说,我想保留所有已发布日期等于或小于今天的对象(并删除所有已结束的对象)。对象保存在我的状态(数组)中:
this.state.data
我首先为今天的值创建一个日期变量,以将其与发布日期进行比较。我还使用 moment() 将其格式化为与对象相同的日期格式:
let today = moment().format("DD/MM/YYYY");
然后我使用过滤器方法来比较和过滤掉数据:
this.state.data.filter(item => new Date(item.publishedDate) >= new Date(today))
我也试过:
this.state.data.filter(function(item) {
if (new Date(item.publishedDate) >= new Date(today)) {
return false;
}
return true;
});
它不仅不起作用,而且我仍然拥有数组中的所有对象,并且没有任何内容被过滤掉。代码有什么问题?
解决方案
您可以像这样简单地使用moment
's 的内置比较器
this.state.data.filter(item => moment(item.publishedDate,'DD/MM/YYYY').isSameOrAfter(today))
推荐阅读
- java - Apache POI 框架何时将 excel 单元格视为空和 null?
- c# - 如何在 ZKTeco 门禁控制器中保存二维码
- python - 递归遍历 XML 并将输出打印到 excel/csv
- arduino - PIC和ARDUINO之间的UART通信
- android - 在 ANDROID STUDIO 中,当我添加一个组件时,它是不可见的,仅在侧屏幕中可见,这是屏幕截图-
- python - 如果元音在辅音之后并在python中分配为一个字母,如何连接辅音和元音
- java - 使用 OpenCsv 读取 2 列 Csv 文件时出现数组越界错误
- oop - TwinCat3 如何在 OOP 中有效地设置 EventLogger?
- android - Toast 如何显示 EditText.getText().toString()
- selenium - 我们如何在 Selenium 中使用 'AttachTo' 或任何其他像 WatiN 一样的抓取方法?