如何按date属性对JavaScript对象数组进行降序排序?
按'date'属性降序排序JavaScript对象数组
你的数组中date属性是/Date(时间戳)/格式的字符串,要实现降序排序,核心是先提取其中的时间戳数字,再基于时间戳进行比较排序。
实现步骤
- 提取时间戳:通过正则表达式匹配
date字符串中的数字部分,转换为数值类型。 - 数组排序:使用
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
相关产品推荐
相关产品推荐

