Как отсортировать массив состоящий из объектов, по дате?

const activities = [
  { title: 'Shopping', date:'10.06.2019' },
  { title: 'Trekking', date:'22.06.2019' },
  { title: 'Hiking', date:'28.06.2019' },
]

const sortedActivities = activities.sort((a: any, b: any) => {
  let q: any =  moment(a.date, ["MM-DD-YYYY", "DD-MM-YYYY"])
  let p: any =  moment(b.date, ["MM-DD-YYYY", "DD-MM-YYYY"])

  let u: any = Date.parse(q["_d"]);
  let m: any = Date.parse(p["_d"]);
  console.log(u);
  console.log(m);
  
  
  return u - m;
})
console.log(sortedActivities);

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

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

Можете так:

const activities = [{
    title: 'Shopping',
    date: '10.06.2019'
  },
  {
    title: 'Trekking',
    date: '22.06.2019'
  },
  {
    title: 'Hiking',
    date: '28.06.2019'
  },
];

const getDate = (date) => {
  const splitDate = date.split('.');
  
  [splitDate[0], splitDate[1]] = [splitDate[1], splitDate[0]];
  
  return new Date(splitDate.join('/'));
}

activities.sort((a, b) => {
  const aDateTime = getDate(a.date).getTime();
  const bDateTime = getDate(b.date).getTime();
  
  return bDateTime - aDateTime;
});

console.log(activities);

→ Ссылка