javascript - 无法获取相同月份和年份的记录
问题描述
我有一个对象列表,其属性名为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 的记录
解决方案
只是修复了一点,问题是您的过滤器函数评估了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)
推荐阅读
- python - 如何在 python 中从 twitter 中的用户数据字典中获取/访问“名称”属性?
- angular - angular2+:如何遍历三态(不确定)复选框的值
- python - 自定义MongoDB类的模拟方法
- nuget - 我使用的 NuGet 包会在 10 年后可用吗
- python - 多处理redis实例-thread_lock错误
- python - Alternatives of zip to create dictionaries from lists in python 3.7
- c# - 确认或取消消息对话框
- optimization - 一个快速的编码技巧最终使 Julia 中的代码变慢了
- c - atmega328p (C) 和 Feather m0 (Arduino) 之间的 uart 接收
- python - 嵌套for循环以对excel行执行计算