如何在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
相关产品推荐
相关产品推荐

