我使用的是 Angular2,我有一个包含日期对象 (~1000) 的数组。 大多数日期对象都有完全相同的日期(例如 2016_11_02;日期没有小时和分钟)。 通常数组中应该有大约 10-20 个不同的日期。
现在我想过滤这个数组并删除重复的日期。 所以最后应该有大约 ~10-20 个日期对象在数组中。
这是我试过的代码:
let uniqueArray = duplicatesArray.filter(function(elem, pos) {
return channelEPGDates.indexOf(elem) == pos;
});
console.log('unique: ' + uniqueArray.length);
我知道这是不正确的,因为唯一数组的长度与旧数组的长度相同。但是我如何在过滤函数中比较日期本身呢?
非常感谢!
最佳答案
我会使用 getTime
方法将日期映射到纪元时间,然后将它们映射回 Date
对象。
let uniqueArray = duplicatesArray
.map(function (date) { return date.getTime() })
.filter(function (date, i, array) {
return array.indexOf(date) === i;
})
.map(function (time) { return new Date(time); });
关于Javascript:过滤具有重复日期的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40418507/