我在我的谓词函数中使用 moment.js 对每个具有
expiration_date
属性的对象数组进行过滤方法。
我想过滤掉
expiration_date
属性比今天旧的对象。在我的示例数组中,它将是最后一个。
let dateOfObjects = [
{
expirationDate: "9999-12-31",
},
{
expirationDate: "9999-12-31",
},
{
expirationDate: "9999-12-31",
},
{
expirationDate: "9999-12-31",
},
{
expirationDate: "9999-12-31",
},
{
expirationDate: "1999-12-31",
},
];
dateOfObjects.filter((el) => {
return moment.utc(el.expirationDate).isAfter(moment()) === true;
});
我试图在返回前安慰这个
console.log('moment.utc(el.expirationDate).isAfter(moment()) ', moment.utc(el.expirationDate).isAfter(moment()) === true);
最后所有记录都是真实的,但是当我 console.log
dateOfObjects
我仍然看到它?!
我究竟做错了什么?
上面的这个例子在下面的异步函数中......
async getAllDateStatuses(): Promise<StdDateStatus[]> {
let dateStatusEntities: StdDateStatusEntity[] = null;
dateStatusEntities = await this.dbService.getConnection().getRepository(StdDateStatusEntity).find();
dateStatusEntities.filter((el) => {
return moment.utc(el.expirationDate).isAfter(moment()) === true;
});
return this.populateMultiple(dateStatusEntities);
}
这重要吗?
你的
dateOfObjects.filter()
对我来说很好用。
你应该知道
filter()方法不会改变原数组
来源:定义和用法
因此,做
console.log(dateOfObjects)
会给你同样的价值,即使你之前做了dateOfObjects.filter()
。
所以,收集过滤后的数组需要做的就是在变量中定义
dateOfObjects.filter()
例子:
const filteredObject = dateOfObjects.filter((el) => {
return moment.utc(el.expirationDate).isAfter(moment()) === true;
});
console.log(filteredObject);
filteredObject
将是您想要的变量。