Javascript:过滤具有重复日期的数组

标签 javascript arrays angular

我使用的是 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/

相关文章:

javascript - 更新函数 JQuery 内的变量

javascript - 对 Javascript 数组进行排序

arrays - 在Rails中,如何将元素添加到所有记录的数组类型属性中?

c - 二维数组地址簿存在 fgets 问题

angular - 用于 JWT 验证的 Google 公钥在哪里?

javascript - 在 Angular Directive(指令)中使用 ng-repeat 过滤器

javascript - 如何在 Angular 2 中对指令进行单元测试?

arrays - 如何在 swift 中为 UIPickerview 添加一个新元素到一个 2 组件数组

angular - Firebase 托管中 Angular 8 的 Mime 错误

javascript - Angular 2 应用程序无法正常工作 - 空白页面