javascript - 根据年份过滤日期列表中的最新日期
问题描述
必须过滤日期数组中的日期,其中应包含一年中的最新日期。
data = [
"2017-06-14",
"2017-06-30",
"2017-09-29",
"2017-12-29",
"2018-03-29",
"2018-06-29",
"2018-09-28",
"2018-12-31",
"2019-03-29",
"2019-06-28"
]
预期的
data = ["2017-12-29","2018-12-31","2019-06-28"]
解决方案
这是按年份分组和按最新过滤的组合。
这种方法使用 aMap
和年份作为键,并检查日期是否大于实际日期,然后替换旧日期。
const getYear = date => date.slice(0, 4);
var data = [ "2017-06-14", "2017-06-30", "2017-09-29", "2017-12-29", "2018-03-29", "2018-06-29", "2018-09-28", "2018-12-31", "2019-03-29", "2019-06-28"],
result = Array.from(data
.reduce((m, d) => m.get(getYear(d)) > d ? m : m.set(getYear(d), d), new Map)
.values()
);
console.log(result);
推荐阅读
- python - 如何使用 python 将数据发送到以下网站并将那里生成的数据取回?
- powershell - youtube-dl:通过 --exec 运行 PowerShell 函数
- debian - E: APT::Default-Release 的值 'stable' 无效,因为这样的版本在源代码中不可用
- mysql - 如何读取 docker 端口映射信息?
- c++ - 是否可以在 DPI 或类似的东西中指定图标的大小?
- sql - SQL 在没有排序依据的视图中领先和落后?
- wordpress - 注册用户 WPMU 并进行验证 - WordPress
- facebook - 需要从公共页面创建 Facebook 事件源
- airflow - 为什么密码连接丢失?
- javascript - 来自 ng-model 的控制器中未定义的参数