javascript - 检查数组中的每一项是否是今天的日期?

标签 javascript momentjs

我有一个对象数组。每个对象都有一个日期属性。我正在尝试创建一个函数,如果项目的日期等于今天的日期,我将每个项目附加到一个新数组。

另外,我不确定 for 循环是否是最有效的方法,尽管这个列表永远不会超过几百个项目。

我的功能:

todayListItems() {
    const todayItems = [];
    const todayDate = moment(new Date()).format('dd-mm-YYYY');
    for (let i = 0; i < myArray.length; i++) {
      const itemDate = moment(myArray[i].date).format('dd-mm-YYYY');
      if (itemDate === todayDate) {
        todayItems.push(myArray[i]);
      }
    }
    console.log(todayItems);
    return todayItems;
  }

此函数会运行,但即使有日期为今天的项目,也不会将任何内容推送到数组。

最佳答案

您可以使用 Array.filter()moment#isSame使用第二个参数将粒度限制为毫秒以外的单位:

function todayListItems(arr) {
  return arr.filter(obj => moment().isSame(obj.date, 'day'));
}

todayListItems(myArray);

演示:

function todayListItems(arr) {
  return arr.filter(obj => moment().isSame(obj.date, 'day'));
}

const myArray = [
  { date: '2019-10-14T12:10:00Z'},
  { date: new Date() },
  { date: moment().minutes(120).format('YYYY-MM-DDTHH:mm:ss') },
  { date: new Date('2019-10-23T01:00:00') },
];

console.log(todayListItems(myArray));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

关于javascript - 检查数组中的每一项是否是今天的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58501449/

相关文章:

javascript - 立即更改语言环境不会相应地刷新 vuejs 组件

javascript - 如何用jquery ajax调用替换remoteFunction调用

javascript - 如何在 promise 中执行回调?

momentjs - 如何使用 moment.js 显示自某个日期以来的年数和月数

angular - ng-fullcalendar 标题在 Angular 5 中未定义未定义

javascript - 使用 moment.js 将我的变量转换为 12/12 时间格式

momentjs - 使用工作周 View 更改一周的第一天

javascript - jQuery 从输入文本中获取错误数据

javascript - 文件上传ExtJS 4

javascript - Windows Azure 并使用 Node js 进行 Restify