Как удалить дубликат Date из массива Date? - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь удалить дублирующую дату из массива Date, например

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

. Я конвертирую даты в Set, но это не удаляет дубликаты, но когда я пытаюсь использовать другие типы данных вместо Dateв работе, где проблема?

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

1 Ответ

0 голосов
/ 07 июня 2018

Поскольку ваши даты являются объектами, они будут сравниваться по ссылкам.Два объекта не могут быть равны, хотя они имеют все равные свойства.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...