Moment.js 过滤掉日期属性不在当前日期之后的对象

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

我在我的谓词函数中使用 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);
    }

这重要吗?

javascript typescript momentjs
1个回答
1
投票

你的

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
将是您想要的变量。

© www.soinside.com 2019 - 2024. All rights reserved.