无法获得相同月份和年份的记录

ter*_*res 2 javascript momentjs

我有一个对象列表,其中包含一个名为的属性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" }
]
Run Code Online (Sandbox Code Playgroud)

我想要返回所有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())
});
Run Code Online (Sandbox Code Playgroud)

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

Sil*_*iol 5

只是修复了一点,问题是你的过滤器函数评估了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)
Run Code Online (Sandbox Code Playgroud)

  • @KrishnaPrashatt我们是两个不同的人:P (2认同)