Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从日期数组中删除重复的日期?_Javascript_Node.js_Date_Set - Fatal编程技术网

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(日期= > +日期))。还值得注意的是,生成的数组将是新日期,而不是对原始日期的引用(这可能是一个问题)。