首页 > 解决方案 > 无法获取相同月份和年份的记录

问题描述

我有一个对象列表,其属性名为created

let objs = [
   { id: "1", created: "2019-02-12 00:00:00" },
   { id: "2", created: "2018-02-12 00:00:00" },
   { id: "3", created: "2017-02-12 00:00:00" },
   { id: "4", created: "2016-02-12 00:00:00" },
   { id: "5", created: "2015-02-12 00:00:00" }
]

我想返回所有具有 2019 年和月份:02 的记录,所以我做了:

var curr_date = moment(moment(), "YYYY-MM-DD");
var in_month = objs.filter((item) => function () {
        return (moment(item.created, format).month() == curr_date.month() && 
                    moment(item.created, format).year() == curr_date.year())
});

问题是in_month总是返回整个数组,为什么?预期的输出应该是 id 为 1 的记录

标签: javascriptmomentjs

解决方案


只是修复了一点,问题是您的过滤器函数评估了function()您传递的而不是执行它,删除它是有效的:

let objs = [
   { id: "1", created: "2019-02-12 00:00:00" },
   { id: "2", created: "2018-02-12 00:00:00" },
   { id: "3", created: "2017-02-12 00:00:00" },
   { id: "4", created: "2016-02-12 00:00:00" },
   { id: "5", created: "2015-02-12 00:00:00" }
]

let format = "YYYY-MM-DD"
var curr_date = moment(moment(), format);
var in_month = objs.filter(item => 
  moment(item.created, format).month() == curr_date.month() && 
  moment(item.created, format).year() == curr_date.year()
 );

console.log(in_month)

推荐阅读