How to fill missing dates inside array of object using typescript/javascript?

Viewed 110

I want to fill this object from today's date to next 7 days. Here is my object

let obj = {
  "sessions": [{
       "date": "15-05-2021"
   },
   {
       "date": "16-05-2021"
   },
   {
       "date": "18-05-2021"
   }]
}

Expected output:

let output = {
  "sessions": [{
       "date": "14-05-2021"
   },
   {
       "date": "15-05-2021"
   },
   {
       "date": "16-05-2021"
   },
   {
       "date": "17-05-2021"
   },
   {
       "date": "18-05-2021"
   },
   {
       "date": "19-05-2021"
   },
   {
       "date": "20-05-2021"
   }]
}

Here is the code to generate array of dates from today to next 7 days

function getWeekDates() {
    let dates = [];
    dates.push(new Date(Date.now() + 1000 * 3600 * 1).toLocaleDateString('en-GB').replace('/', '-').replace('/', '-'));
    for (let i = 1; i <= 6; i++) {
      dates.push(new Date(Date.now() + 1000 * 3600 * (i * 24)).toLocaleDateString('en-GB').replace('/', '-').replace('/', '-'));
    }
    console.log(dates);
}

getWeekDates();

//Output:["14-05-2021", "15-05-2021", "16-05-2021", "17-05-2021", "18-05-2021", "19-05-2021", "20-05-2021"]

I'm newbie so please be easy on me.

Thanks in advance...

1 Answers

You can do it by replacing the obj.sessions with the newly generated dates.

let obj = {
  "sessions": [{
       "date": "15-05-2021"
   },
   {
       "date": "16-05-2021"
   },
   {
       "date": "18-05-2021"
   }]
}

function getWeekDates() {
    let dates = [];
    dates.push({ "date": new Date(Date.now() + 1000 * 3600 * 1).toLocaleDateString('en-GB').replace('/', '-').replace('/', '-')});
    for (let i = 1; i <= 6; i++) {
      dates.push({ "date": new Date(Date.now() + 1000 * 3600 * (i * 24)).toLocaleDateString('en-GB').replace('/', '-').replace('/', '-')});
    }
    obj.sessions = [...dates]
    console.log(obj)
}

getWeekDates();

Related