javascript - 如何从日期数组中删除重复的日期?

标签 javascript node.js date set

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

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/

相关文章:

javascript - 是否可以在 nodejs+puppeteer 中包含一个源文件来添加功能?

javascript - 在 head 中隐藏 javascript

javascript - 检索从 gmail 下载的文件形式附件的内容,因为它存储在 gmail 服务器中

javascript - Electron 协议(protocol)处理程序不适用于 Windows

javascript - 如何在javascript中动态构建json数组

mysql - Smarty mysql 日期 + 1 天

javascript - jQuery prevAll 在表上无法正常工作

javascript - 使用 ajax 拖放功能重新排序列字段? PHP/jQuery

java - Android Date.getTime() 在原始日期基础上增加一天

java - 获取当前一周日期的正确方法