Поскольку ваши даты являются объектами, они будут сравниваться по ссылкам.Два объекта не могут быть равны, хотя они имеют все равные свойства.
const a = { name: 'Test' }
и const b = { name = 'Test' }
имеют одинаковые значения, но их ссылки (адрес в памяти ) не равны.Так почему Set не работает в вашем случае.
Вы можете работать с их строковыми представлениями .Строки будут сравниваться по их значению .const a = 'Test'
и const b = 'Test'
идентичны в этом случае.Отобразите их, используя функцию toString
, а затем вставьте их в набор.Одинаковые даты будут иметь одинаковые строковые представления, поэтому они не будут уникальными.
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);