How can I build an object in React(typescript) based on an array of objects

I have two user objects:

const user = {
    startDate: new Date('2022-10-06'),
    endDate: new Date('2022-10-10'),
    id:'1234',
    title: 'Title 1'
  };
const user2 = {
    startDate: new Date('2022-10-12'),
    endDate: new Date('2022-10-17'),
    id: '1112',
    title: 'Title 2'
  };

and an array with these two objects and an empty object called dateToUserMap:

  const users = [user, user2];
  const dateToUserMap = {};

I want to add data to dateToUserMap and it needs to look like this:

dateToUserMap = {
    '01.11.2022': [
      {
        id: 'asd',
        title: 'asd'
      }
    ],
    '02.11.2022': [
      {
        id: 'asd',
        title: 'asd'
      },
      {
        id: 'asd1',
        title: 'asd1'
      }
    ],
    '03.11.2022': [
      {
        id: 'asd1',
        title: 'asd1'
      }
    ]
  };

dateToUserMap should be an object with the days of the intervals of each user in chronological order (in my case should be days from 10/6 until 10/10 and 10/12 until 10/17), and each day should have an array of objects with the id and title of the users in that interval.

I tried using forEach to loop trough the users in the users array and calculated the interval of each user but I don’t know how to pass that data in the object with all the dates and the id and title

users.forEach(user => {   
    const interval = eachDayOfInterval({ start: user.startDate, end: user.endDate });
    console.log(interval);
  });

I use date-fns library to help me work with dates and when I log the interval to console I get this:

(6) [Wed Oct 12 2022 00:00:00 GMT+0300 (Eastern European Summer Time), Thu Oct 13 2022 00:00:00 GMT+0300 (Eastern European Summer Time), Fri Oct 14 2022 00:00:00 GMT+0300 (Eastern European Summer Time), Sat Oct 15 2022 00:00:00 GMT+0300 (Eastern European Summer Time), Sun Oct 16 2022 00:00:00 GMT+0300 (Eastern European Summer Time), Mon Oct 17 2022 00:00:00 GMT+0300 (Eastern European Summer Time)]
0
: 
Wed Oct 12 2022 00:00:00 GMT+0300 (Eastern European Summer Time) {}
1
: 
Thu Oct 13 2022 00:00:00 GMT+0300 (Eastern European Summer Time)
[[Prototype]]
: 
Object
2
: 
Fri Oct 14 2022 00:00:00 GMT+0300 (Eastern European Summer Time) {}
3
: 
Sat Oct 15 2022 00:00:00 GMT+0300 (Eastern European Summer Time) {}
4
: 
Sun Oct 16 2022 00:00:00 GMT+0300 (Eastern European Summer Time) {}
5
: 
Mon Oct 17 2022 00:00:00 GMT+0300 (Eastern European Summer Time) {}
length
: 
6
[[Prototype]]
: 
Array(0)

New contributor

Cronix_legion is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *