我有一个日期数组,我想对其进行排序并仅获取最近的日期
["Mon Jul 16 2018 11:40:28 GMT+0200 (CEST)",
"Fri Jul 13 2018 09:33:46 GMT+0200 (CEST)",
"Fri Jul 13 2018 09:21:36 GMT+0200 (CEST)",
"Fri Jul 13 2018 09:03:42 GMT+0200 (CEST)",
"Fri Jul 13 2018 09:01:05 GMT+0200 (CEST)",
"Fri Jul 13 2018 08:53:23 GMT+0200 (CEST)",
"Fri Jul 13 2018 08:52:33 GMT+0200 (CEST)",
"Thu Jul 12 2018 13:41:59 GMT+0200 (CEST)",
"Thu Jul 12 2018 13:41:49 GMT+0200 (CEST)",
"Thu Jul 12 2018 13:41:42 GMT+0200 (CEST)"]
日期是字符串,我设法对它们进行排序并得到我想要的,但是问题是我将它们作为对象而不是字符串
datesFiltered = [];
const array = this.users.map(a => a.date)
for (const date of array) {
if (!this.datesFiltered.find(d => new Date(d).setHours(0, 0, 0)
=== new Date(dateString).setHours(0, 0, 0))) {
this.datesFiltered.push(new Date(dateString))
}
}
结果:
[
Mon Jul 16 2018 15:32:50 GMT+0200 (Central European Summer Time),
Fri Jul 13 2018 09:33:46 GMT+0200 (Central European Summer Time),
Thu Jul 12 2018 13:41:59 GMT+0200 (Central European Summer Time)
]
代替 :
[
"Mon Jul 16 2018 11:40:28 GMT+0200 (CEST)",
"Fri Jul 13 2018 09:33:46 GMT+0200 (CEST)"
"Thu Jul 12 2018 13:41:59 GMT+0200 (CEST)"
]
您可以创建一个Set
用于唯一日期的日期,并根据该日期过滤出Set
使用中存在值的那些日期Array.filter
var array = ["Mon Jul 16 2018 11:40:28 GMT+0200 (CEST)","Fri Jul 13 2018 09:33:46 GMT+0200 (CEST)","Fri Jul 13 2018 09:21:36 GMT+0200 (CEST)","Fri Jul 13 2018 09:03:42 GMT+0200 (CEST)","Fri Jul 13 2018 09:01:05 GMT+0200 (CEST)","Fri Jul 13 2018 08:53:23 GMT+0200 (CEST)","Fri Jul 13 2018 08:52:33 GMT+0200 (CEST)","Thu Jul 12 2018 13:41:59 GMT+0200 (CEST)","Thu Jul 12 2018 13:41:49 GMT+0200 (CEST)","Thu Jul 12 2018 13:41:42 GMT+0200 (CEST)"];
var set = new Set();
var array = array.filter(a => {
var d = new Date(a).setHours(0, 0, 0);
if(set.has(d)) return false;
else set.add(d);
return true;
});
console.log(array);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句