0

I ran into a problem that I don’t know how to sort an array of objects from largest to smallest by date and year at the same time... I will be very grateful for your help!

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}},
]

// result
[
    {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}},
]

// my attempt
arrDate.sort((a, b) => a.date.year - b.date.year)
vinograd
  • 93
  • 4
  • The function passed to `sort()` just needs to determine, for `a` and `b`, which one is "greater than" or "less than" or if they are "equal". How would you determine that for your data? Perhaps if the two `year` values are equal then you compare the two `day` values? – David Oct 13 '22 at 15:23
  • 2
    `arr.sort((a,b) => b.date.year - a.date.year || b.date.day -a.date.day )` – adiga Oct 13 '22 at 15:30

0 Answers0