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

如何对单层时间序列JSON按日期倒序排序?

按日期键倒序排序JSON时间序列数据

给定如下单层时间序列JSON数据:

{ "2023-06":7.2, "2023-08":6.7, "2023-07":5, "2022-04":3.5, "2023-05":6.1 }

要实现按日期键从最新到最早的倒序排序,得到目标结果:

{ "2023-08":6.7, "2023-07":5, "2023-06":7.2, "2023-05":6.1, "2022-04":3.5 }

可以按照以下步骤操作(以JavaScript为例):

实现步骤

  • 解析JSON为JavaScript对象:用JSON.parse()把JSON字符串转成可操作的JS对象。
  • 提取键值对数组:使用Object.entries()获取对象的键值对数组,每个元素是[日期键, 值]的形式。
  • 按日期键倒序排序:利用数组sort()方法,对日期键进行比较。由于日期格式是YYYY-MM,字符串字典序和日期顺序一致,直接用localeCompare倒序即可;也可以转成Date对象比较,兼容性更严谨。
  • 重组为排序后的对象:用Object.fromEntries()把排序后的键值对数组转回对象(ES6+支持,旧环境可改用循环构建)。
  • 转回JSON字符串:最后用JSON.stringify()输出格式化后的JSON。

完整代码示例

const originalJson = '{ "2023-06":7.2, "2023-08":6.7, "2023-07":5, "2022-04":3.5, "2023-05":6.1 }';

// 解析为JS对象
const data = JSON.parse(originalJson);

// 提取键值对并按日期倒序排序
const sortedEntries = Object.entries(data).sort(([aKey], [bKey]) => {
  // 方法1:利用YYYY-MM字符串的字典序比较
  return bKey.localeCompare(aKey);
  
  // 方法2:转成Date对象比较(更严谨,适配异常格式场景)
  // const dateA = new Date(aKey);
  // const dateB = new Date(bKey);
  // return dateB - dateA;
});

// 重组为排序后的对象
const sortedData = Object.fromEntries(sortedEntries);

// 输出格式化后的JSON
const sortedJson = JSON.stringify(sortedData, null, 2);
console.log(sortedJson);

注意事项

  • 现代JavaScript引擎(ES6及以上)会保留对象的插入顺序,Object.fromEntries()生成的对象能保证排序后的顺序;如果运行环境是ES5及以下,建议使用Map存储排序后的键值对,再手动遍历构建结果,避免顺序丢失。
  • 如果日期格式不是YYYY-MM,需要调整排序时的日期解析逻辑,确保能正确比较日期先后。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 10:51:14