Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据年份筛选日期列表中的最新日期_Javascript_Arrays_Json - Fatal编程技术网

Javascript 根据年份筛选日期列表中的最新日期

Javascript 根据年份筛选日期列表中的最新日期,javascript,arrays,json,Javascript,Arrays,Json,必须在日期数组中筛选日期,其中日期应包括一年中的最新日期 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"]

必须在日期数组中筛选日期,其中日期应包括一年中的最新日期

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

请始终发布您的尝试,而不仅仅是预期的结果,以便我们能够帮助您推进方法,因为有多种方法可以解决同一问题

我的尝试如下:

1) 按递增顺序对日期排序

2) 仅筛选一年的最后日期。
var res=[“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”]
.sort((a,b)=>a.replace(/-/g')-b.replace(/-/g'))
.filter((d,i,c)=>!c[i+1]| | d.split('-')[0]!=c[i+1]。split('-')[0])

log(res)
它是关于按年份分组和按最新版本筛选的组合

这种方法使用a和年份作为键,检查日期是否大于实际日期,然后替换旧日期

constgetyear=date=>date.slice(0,4);
风险值数据=[“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”],
结果=数组。从(数据)
.reduce((m,d)=>m.get(getYear(d))>d?m:m.set(getYear(d),d),新地图)
.values()
);

控制台日志(结果)添加您迄今为止尝试过的代码片段我知道如何筛选这些日期。请在发布之前尝试一下。由于日期已被排序,因此一个简单的
for循环并将前4个字符与前一项的4个字符进行比较,然后根据条件添加到输出数组中?请阅读