如何从Date数组中删除重复日期?

时间:2018-06-07 07:41:39

标签: javascript node.js date set

我正在尝试从日期数组中删除重复日期,如

let dates = ["date1","date2","date1","date3"];

我将日期转换为Set但是它不会删除重复,但是当我尝试使用其他数据类型而不是Date工作时,问题出在哪里?

let uniq = dates => [...new Set(dates)];

1 个答案:

答案 0 :(得分:2)

因为您的日期是对象,我们将通过引用进行比较。虽然两个对象具有相同的属性,但它们不能相等。

const a = { name: 'Test' }const b = { name = 'Test' }具有相同的值,但它们的引用(内存中的地址)不相等。那么为什么Set在你的情况下不起作用。

您可以使用他们的字符串表示。字符串将通过进行比较。在这种情况下,const a = 'Test'const b = 'Test'是相同的。使用toString函数映射它们,然后将它们插入到Set中。相同的日期将具有相同的字符串表示,因此它们不是唯一的。

const dates = [
    new Date(), // Will be the same as the below 3 dates at runtime
    new Date(), 
    new Date(), 
    new Date(), 
    new Date(2015, 1, 1)
];

const uniqueDates = [...new Set(dates.map(date => date.toString()))];

console.log(uniqueDates);