首页 > 解决方案 > 具有日期升序的Javascript数组过滤器并删除重复项

问题描述

years = [ Date, Date, Date  ]

// This gets date ascending order but not sure how can i remove duplicate   
this.years.sort(function(a, b) {
  let dateA:any = new Date(a); 
  let dateB:any = new Date(b);
  return (dateA - dateB);
});
console.log( this.years );

这个排序函数中如何去除重复的日期,还是需要单独写?这个脚本标准吗?

标签: javascripthtmlecmascript-6ecmascript-5

解决方案


排序时无法删除项目,因为排序功能只是移动索引。我建议您首先获取唯一元素,以便排序的结果数组更小,并且您不对将被删除的元素进行排序。

请看一下这个答案以获得独特的价值:

const dates = [Date, Date, Date];
const uniqueDates = dates.filter((date, i, self) => 
  self.findIndex(d => d.getTime() === date.getTime()) === i
)

在那之后:

const uniqueDatesSorted = uniqueDates.sort((a, b) => a -b)

希望能帮助到你!


推荐阅读