首页 > 解决方案 > 根据年份过滤日期列表中的最新日期

问题描述

必须过滤日期数组中的日期,其中应包含一年中的最新日期。

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"]

标签: javascriptarraysjson

解决方案


这是按年份分组和按最新过滤的组合。

这种方法使用 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);


推荐阅读