我正在尝试从日期数组中删除重复的日期,例如
let dates = ["date1","date2","date1","date3"];
我将日期转换为 Set,但它不会删除重复项,但是当我在工作中尝试使用其他数据类型而不是 Date 时,问题出在哪里?
让 uniq = 日期 => [...new Set(dates)
];
最佳答案
因为您的日期是对象,我们将通过引用对其进行比较。两个对象不可能相等,尽管它们具有所有相同的属性。
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);
关于javascript - 如何从日期数组中删除重复的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50735548/