Как найти наибольшую дату в массиве объектов

Имеется массив объектов:

[
    {
     id: 1,
     time_update: "Tue Apr 13 2020 17:06:19 GMT+0300 (Москва, стандартное время)"
    },
    {
     id: 2,
     time_update: "Tue Apr 17 2020 17:06:19 GMT+0300 (Москва, стандартное время)"
    },
    {
     id: 3,
     time_update: "Tue Apr 11 2020 17:06:19 GMT+0300 (Москва, стандартное время)"
    },
    ...
]

Мне требуется вернуть массив объектов самых последних дат.

Написал функцию

private lastDateObjectInArray(data) {
        return data.reduce((a, b) => {
            if (a.time_update || b.time_update) {
                return new Date(a.time_update) > new Date(b.time_update) ? a : b;
            } else {
                return 'Не найдено';
            }
        });
    }

Пожалуйста, подскажите, как вернуть массив объектов (сохранив все соседние элементы), где будет несколько последних дат? Чтобы через аргумент в функции я передавал индекс, который бы указывал сколько последних объектов будет записано: lastDateObjectInArray(data, index)


Ответы (1 шт):

Автор решения: WVFFLIFE

const arr = [{
    id: 1,
    time_update: "Tue Apr 13 2020 17:06:19 GMT+0300 (Москва, стандартное время)"
  },
  {
    id: 2,
    time_update: "Tue Apr 17 2020 17:05:19 GMT+0300 (Москва, стандартное время)"
  },
  {
    id: 3,
    time_update: "Tue Apr 11 2020 17:04:19 GMT+0300 (Москва, стандартное время)"
  },
];

function sortAndReduceArray(data, index) {
  return data.sort((a, b) => {
      return new Date(a['time_update']).getTime() > new Date(b['time_update']).getTime() ? -1 : 1;
    })
    .filter((_, elIdx) => {
      return elIdx < index
    })
}

console.log(sortAndReduceArray(arr, 2))

→ Ссылка