Javascript数组过滤器按日期升序排列并删除重复项

时间:2019-06-26 14:18:34

标签: javascript html ecmascript-6 ecmascript-5

ui->statusBar->addPermanentWidget(ui->label1, 1);

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

2 个答案:

答案 0 :(得分:1)

由于排序功能只能移动索引,因此无法在排序时删除项目。我建议您首先获取唯一的元素,以使要排序的结果数组较小,并且不要对将要删除的元素进行排序。

请查看this answer以获取唯一值:

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)

希望有帮助!

答案 1 :(得分:0)

好吧,sort无法删除重复项,因此在我的解决方案中,我先使用mapfilter删除了重复项,然后应用排序。

let myArray = [new Date(2019, 06, 28), new Date(2019, 07, 28), new Date(2019, 06, 28), new Date(2019, 07, 14), new Date(2019, 07, 01), new Date(2019, 07, 16), new Date(2019, 07, 14)]

let unique = myArray.map((date) => +date)
  .filter((date, i, array) => array.indexOf(date) === i)
  .map((time) => new Date(time));

unique.sort((a, b) => a - b);

console.log(unique)