0

I have an array of date i want to sort it and get only the recent Date

[
  "Mon Jul 16 2018 11:40:28 GMT+0200 (CEST)",
  "Fri Jul 13 2018 09:33:46 GMT+0200 (CEST)",
  "Fri Jul 13 2018 09:21:36 GMT+0200 (CEST)",
  "Fri Jul 13 2018 09:03:42 GMT+0200 (CEST)",
  "Fri Jul 13 2018 09:01:05 GMT+0200 (CEST)",
  "Fri Jul 13 2018 08:53:23 GMT+0200 (CEST)",
  "Fri Jul 13 2018 08:52:33 GMT+0200 (CEST)",
  "Thu Jul 12 2018 13:41:59 GMT+0200 (CEST)",
  "Thu Jul 12 2018 13:41:49 GMT+0200 (CEST)",
  "Thu Jul 12 2018 13:41:42 GMT+0200 (CEST)"
]

shouldDisplayDate(date: Date) {
  datesFiltered = [];
  const array = this.users.map(a => a.date)
  for (const date of array) {
    if (!this.datesFiltered.find(d => new Date(d).setHours(0, 0, 0) ===
        new Date(dateString).setHours(0, 0, 0))) {
      this.datesFiltered.push(new Date(dateString).toString())
    }
  }
}

Result :

[
  Mon Jul 16 2018 15:32:50 GMT+0200 (Central European Summer Time),
  Fri Jul 13 2018 09:33:46 GMT+0200 (Central European Summer Time), 
  Thu Jul 12 2018 13:41:59 GMT+0200 (Central European Summer Time) 
]

So I want to check if I enter Mon Jul 16 2018 11:40:28 GMT+0200 (CEST) is in the Array of Object or not?

Rick
  • 4,030
  • 9
  • 24
  • 35
LisaN
  • 165
  • 2
  • 2
  • 13

1 Answers1

0

To see if two dates are equal using === you'll have to use .getTime() on them first (see this answer for more info)

An example of doing a simple date sort and finding if a date exists in your array are below.

To check if the date exists in the array I first convert a string date (the one we're searching for existence) to a Date obj. Then I loop through the array of existing dates and convert them one at a time and use Date.getTime() on each date to see if they are equal, if so, the function will return true.

const dates = [
  "Thu Jul 12 2018 13:41:42 GMT+0200 (CEST)",
  "Fri Jul 13 2018 09:03:42 GMT+0200 (CEST)",
  "Thu Jul 12 2018 13:41:59 GMT+0200 (CEST)",
  "Fri Jul 13 2018 09:33:46 GMT+0200 (CEST)",
  "Mon Jul 16 2018 11:40:28 GMT+0200 (CEST)",
  "Fri Jul 13 2018 08:53:23 GMT+0200 (CEST)",
  "Fri Jul 13 2018 08:52:33 GMT+0200 (CEST)",
  "Thu Jul 12 2018 13:41:49 GMT+0200 (CEST)",
  "Fri Jul 13 2018 09:21:36 GMT+0200 (CEST)",
  "Fri Jul 13 2018 09:01:05 GMT+0200 (CEST)"
];

// simple date sort
let sortedDates = dates.sort(function(a, b) {
  return new Date(b) - new Date(a);
});

console.log(`sorted Dates array is: ${JSON.stringify(sortedDates, null, 2)}`);

console.log(`date exists in array? ${isDateInArray("Mon Jul 16 2018 11:40:28 GMT+0200 (CEST)")}`);

function isDateInArray(dateString) {
  let dateExists = false;
  let date = new Date(dateString);
  dates.forEach(function(arrayDateString) {
      let arrayDate = new Date(arrayDateString);
      if(date.getTime() === arrayDate.getTime()){
        dateExists = true;
      }
  });
  return dateExists;
}
Andrew Lohr
  • 5,380
  • 1
  • 26
  • 38