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

如何对键为字符串日期的JavaScript对象按日期降序排序

解决方案

你原有思路的核心逻辑是正确的,我们可以通过去除冗余变量、使用JS数组内置方法简化代码,同时不损失运行效率。

最简实现

function sortthedates(unsorted){
  return Object.keys(unsorted)
    .sort((a, b) => new Date(b) - new Date(a))
    .reduce((sorted, key) => (sorted[key] = unsorted[key], sorted), {});
}

代码说明

  • 移除了原代码中无意义的冗余变量,逻辑更清晰
  • 用reduce方法替代手动for循环构建新对象,代码更简洁
  • 若你更偏好可读性优先的写法,可将reduce部分改为标准写法:
function sortthedates(unsorted){
  return Object.keys(unsorted)
    .sort((a, b) => new Date(b) - new Date(a))
    .reduce((sorted, key) => {
      sorted[key] = unsorted[key];
      return sorted;
    }, {});
}

高性能优化(针对大数据量场景)

如果你的业务场景需要处理上万个及以上的日期键,可以提前缓存每个键对应的时间戳,避免排序过程中重复创建Date实例、重复解析日期,进一步提升性能:

function sortthedates(unsorted){
  // 提前缓存每个日期键对应的时间戳,仅解析一次
  const keyWithTimestamp = Object.keys(unsorted).map(key => ({
    key,
    timestamp: new Date(key).valueOf()
  }));
  return keyWithTimestamp
    .sort((a, b) => b.timestamp - a.timestamp)
    .reduce((sorted, { key }) => {
      sorted[key] = unsorted[key];
      return sorted;
    }, {});
}

上述所有实现的排序结果和你原有代码完全一致,保留原字符串格式的日期键,按日期从新到旧排序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 19:06:03