You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypeScript中合并日期数据去重并按升序排序

TypeScript 日期数组去重排序实现方案

实现逻辑

  • 去重:利用Set存储已出现的日期字符串,遍历原数组过滤掉重复日期的条目,时间复杂度为O(n)
  • 排序:将MM/DD/YYYY格式的日期字符串转为时间戳,通过时间戳大小比较实现升序排列,避免字符串直接比较的顺序错误

代码实现

类型定义

// 可根据实际业务需求扩展对象的其他字段
interface DateItem {
  date: string;
}

处理函数

function processDateArray(arr: DateItem[]): DateItem[] {
  // 步骤1:按date字段去重,保留首次出现的对应日期条目
  const existedDateSet = new Set<string>();
  const deduplicated = arr.filter(item => {
    if (existedDateSet.has(item.date)) return false;
    existedDateSet.add(item.date);
    return true;
  });

  // 步骤2:按日期升序排序
  return deduplicated.sort((a, b) => {
    return new Date(a.date).getTime() - new Date(b.date).getTime();
  });
}

测试示例

const testRawData: DateItem[] = [
  {date: "05/03/2021"},
  {date: "05/04/2021"},
  {date: "05/05/2021"},
  {date: "05/06/2021"},
  {date: "05/06/2021"},
  {date: "05/07/2021"},
  {date: "05/31/2021"},
  {date: "05/08/2021"},
  {date: "05/31/2021"},
  {date: "05/24/2021"},
  {date: "05/25/2021"},
  {date: "05/26/2021"}
];

const result = processDateArray(testRawData);
// 输出结果与你提供的期望结果完全一致

注意事项

如果你的日期字段格式不是标准的MM/DD/YYYY结构,需要自行调整日期解析逻辑,避免Date构造函数解析出错误的时间戳

内容的提问来源于stack exchange,提问作者user13780186

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:09:03