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

如何按date属性对JavaScript对象数组进行降序排序?

按'date'属性降序排序JavaScript对象数组

你的数组中date属性是/Date(时间戳)/格式的字符串,要实现降序排序,核心是先提取其中的时间戳数字,再基于时间戳进行比较排序。

实现步骤

  1. 提取时间戳:通过正则表达式匹配date字符串中的数字部分,转换为数值类型。
  2. 数组排序:使用Array.sort()方法,传入比较函数,以时间戳的差值实现降序排列。

完整代码示例

var arr = [
  { name: 'Mario', date: '/Date(16487438090000)/' },
  { name: 'Mario', date: '/Date(16987438090000)/' },
  { name: 'Mario', date: '/Date(16887438090000)/' }
];

// 提取时间戳的工具函数
function getTimestamp(dateStr) {
  const numMatch = dateStr.match(/\d+/);
  return numMatch ? Number(numMatch[0]) : 0;
}

// 执行降序排序(直接修改原数组)
arr.sort((itemA, itemB) => {
  const tsA = getTimestamp(itemA.date);
  const tsB = getTimestamp(itemB.date);
  return tsB - tsA;
});

// 输出排序后的数组
console.log(arr);

不修改原数组的写法

如果不想改变原数组,可以先创建数组副本再排序:

// 拷贝数组后排序,原数组保持不变
const sortedArr = [...arr].sort((itemA, itemB) => {
  const tsA = getTimestamp(itemA.date);
  const tsB = getTimestamp(itemB.date);
  return tsB - tsA;
});

排序结果

执行后得到的数组与你期望的一致:

[
  { name: 'Mario', date: '/Date(16987438090000)/' },
  { name: 'Mario', date: '/Date(16887438090000)/' },
  { name: 'Mario', date: '/Date(16487438090000)/' }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:36:29