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

无需创建Date对象对含字符串日期的对象数组排序并过滤null值

问题解答

1. 日期字符串是否属于ISO日期?

你给出的"2022-10-09"这类YYYY-MM-DD格式的字符串,属于ISO 8601日期标准的简化形式,完全符合ISO日期规则。这类字符串的字典排序顺序和实际日期的时间顺序完全一致,这也是我们能直接用字符串比较实现排序的核心前提。

2. 无需创建Date对象的实现方案

完全可以做到,直接利用字符串特性结合数组方法就能完成过滤和排序:

const originalArray = [{name: "First", updated: "2022-10-09"},{name: "Second", updated: "null"},{name: "Third", updated: "2022-12-06"}];

// 先过滤无效项,再按日期降序排序
const sortedResult = originalArray
  .filter(item => item.updated !== "null")
  .sort((a, b) => b.updated.localeCompare(a.updated));

console.log(sortedResult);

执行后得到的结果完全符合预期:

[{name: "Third", updated: "2022-12-06"},{name: "First", updated: "2022-10-09"}]

逻辑说明

  • 过滤:直接判断updated字段是否不等于"null",快速剔除无效数据;
  • 排序:借助ISO日期字符串的特性,用localeCompare方法做字符串反向比较(b和a交换位置),就能实现日期的降序排列,全程不需要创建Date对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:21:12