Javascript 如何从日期数组中删除重复的日期?
我试图从日期数组中删除重复的日期,如Javascript 如何从日期数组中删除重复的日期?,javascript,node.js,date,set,Javascript,Node.js,Date,Set,我试图从日期数组中删除重复的日期,如 let dates = ["date1","date2","date1","date3"]; 我将日期转换为集合,但它不会删除重复数据,但当我尝试使用其他数据类型而不是工作中的日期时,问题出在哪里 让uniq=dates=>[…新设置(日期)] 因为您的日期是对象,所以我们将通过引用来比较它们。虽然两个对象的属性都相同,但它们不可能相等 const a={name:'Test'}和const b={name='Test'}具有相同的值,但它们的引用(内存中
let dates = ["date1","date2","date1","date3"];
我将日期转换为集合,但它不会删除重复数据,但当我尝试使用其他数据类型而不是工作中的日期时,问题出在哪里
让uniq=dates=>[…新设置(日期)
] 因为您的日期是对象,所以我们将通过引用来比较它们。虽然两个对象的属性都相同,但它们不可能相等
const a={name:'Test'}
和const b={name='Test'}
具有相同的值,但它们的引用(内存中的地址)不相等。那么为什么Set在您的情况下不起作用呢
您可以使用它们的字符串表示形式。字符串将通过其值进行比较<代码>常量a='Test'和常量b='Test'
在这种情况下是相同的。使用toString
函数映射它们,然后将它们插入集合中。相同的日期将具有相同的字符串表示形式,因此它们不会是唯一的
const日期=[
new Date(),//在运行时将与以下3个日期相同
新日期(),
新日期(),
新日期(),
新日期(2015年1月1日)
];
const uniqueDates=[…新集合(dates.map(date=>date.toString())];
控制台日志(唯一日期)代码>因为您的日期是对象,我们将通过引用来比较它们。虽然两个对象的属性都相同,但它们不可能相等
const a={name:'Test'}
和const b={name='Test'}
具有相同的值,但它们的引用(内存中的地址)不相等。那么为什么Set在您的情况下不起作用呢
您可以使用它们的字符串表示形式。字符串将通过其值进行比较<代码>常量a='Test'
和常量b='Test'
在这种情况下是相同的。使用toString
函数映射它们,然后将它们插入集合中。相同的日期将具有相同的字符串表示形式,因此它们不会是唯一的
const日期=[
new Date(),//在运行时将与以下3个日期相同
新日期(),
新日期(),
新日期(),
新日期(2015年1月1日)
];
const uniqueDates=[…新集合(dates.map(date=>date.toString())];
控制台日志(唯一日期)
你的日期1
和其他日期都是简单的日期,如2018-06-07 11:42
?如果日期是对象,那么如果它们是单独创建的,它们将永远不会彼此=
。如果您想像那样进行重复数据消除,可以将日期转换为时间戳first@SurenSrapyannot date对象包含0小时、分钟、秒和毫秒的日期您的日期1
和其他简单日期,如2018-06-07 11:42
?如果日期是对象,如果它们是单独创建的,那么它们将永远不会彼此=
。如果您想像那样进行重复数据消除,可以将日期转换为时间戳first@SurenSrapyannot date对象包含0小时、分钟、秒和毫秒的日期“Set对象允许您存储任何类型的唯一值,无论是原始值还是对象引用。”它将与对象进行比较引用非常聪明,但是,OP可能不知道为什么上面做了什么,也不知道为什么现在是字符串。@ Rog添加了一些解释而不是解析字符串,考虑使用时间值来避免所有解析:<代码>……新集合(日期。map(日期= > +日期))。还值得注意的是,生成的数组将是新日期,而不是对原始日期的引用(这可能是一个问题)。“Set对象允许您存储任何类型的唯一值,无论是原始值还是对象引用。”它将与对象进行比较。聪明非常好,但是,OP可能不知道为什么上面做了什么,也不知道为什么现在是字符串。@ Rog添加了一些解释而不是解析字符串,考虑使用时间值来避免所有解析:<代码>……新集合(日期。map(日期= > +日期))。还值得注意的是,生成的数组将是新日期,而不是对原始日期的引用(这可能是一个问题)。