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

如何按年份和日期从大到小排序JavaScript对象数组?

按年份+日期降序排序对象数组

要实现先按年份从大到小、年份相同时按日期从大到小的排序逻辑,你需要调整sort的回调函数,分两级进行比较:

解决方案代码

const arr = [
    {id: 1, date: {day: 05, year: 2003}},
    {id: 2, date: {day: 03, year: 2008}},
    {id: 3, date: {day: 1, year: 2006}},
    {id: 4, date: {day: 07, year: 2009}},
    {id: 5, date: {day: 12, year: 2003}},
    {id: 6, date: {day: 11, year: 2008}},
]

// 排序逻辑:先按年份降序,年份相同则按日期降序
const sortedArr = arr.sort((a, b) => {
    // 先比较年份
    const yearDiff = b.date.year - a.date.year;
    if (yearDiff !== 0) {
        return yearDiff;
    }
    // 年份相同时,比较日期
    return b.date.day - a.date.day;
});

console.log(sortedArr);

逻辑说明

  • b.date.year - a.date.year:用后一个元素的年份减前一个,实现年份降序(大年份在前)
  • 当年份差为0(即年份相同)时,再用b.date.day - a.date.day实现日期降序
  • 注意:你的尝试里写了arrDate.sort,但原数组变量是arr,这里要修正变量名的笔误

输出结果

运行后会得到你期望的数组:

[
    {id: 4, date: {day: 07, year: 2009}},
    {id: 6, date: {day: 11, year: 2008}},
    {id: 2, date: {day: 03, year: 2008}},
    {id: 3, date: {day: 1, year: 2006}},
    {id: 5, date: {day: 12, year: 2003}},
    {id: 1, date: {day: 05, year: 2003}},
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:15:42