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

如何按日期对含created_at属性的JavaScript对象数组排序?

问题分析与解决

错误原因

  1. 误用filter方法:filter的作用是筛选数组中符合条件的元素,并非用于排序,你完全不需要用它来处理排序逻辑。
  2. 属性名不匹配:你的示例数组里日期属性是date,但代码里写的是created_at,这会导致new Date(b.created_at)生成无效的Date对象,无法参与算术运算,触发类型错误。
  3. 排序逻辑嵌套错误:排序应该直接对父数组调用sort方法,不需要嵌套在filter的回调里。

正确解决方案

基础写法(JavaScript/TypeScript)

先修正属性名,直接调用sort方法:

// 注意:示例数组的日期属性是date,若实际数组用的是created_at,替换成对应字段即可
parent_array.sort((a, b) => {
  return new Date(b.date) - new Date(a.date);
});
  • 上述代码会按日期倒序排列(最新日期在前)
  • 如果需要正序排列,调换b.date和a.date的位置:
parent_array.sort((a, b) => {
  return new Date(a.date) - new Date(b.date);
});

类型安全的TypeScript写法

为避免类型错误,可先定义数组元素的类型:

interface Item {
  id: number;
  date: string; // 实际字段是created_at的话,替换成created_at即可
}

const parent_array: Item[] = [
  { id: 1, date: '2022-12-01T20:34:52.000000Z' },
  { id: 2, date: '2022-12-06T20:34:52.000000Z' }
];

parent_array.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());

用getTime()显式获取时间戳,能让类型检查更清晰,避免潜在的类型问题。

注意事项

  • sort方法会原地修改原数组,如果不想改动原数组,可以先创建副本再排序:
const sortedArray = [...parent_array].sort((a, b) => new Date(b.date) - new Date(a.date));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:55:22