I am trying to write a function an array of the list based on the date which means I need to have the below output as return of the function
const data = [
{
id: 1,
week: 'Current Week', // Text Based on the Current year where the range lies
displayText: '15th Mar - 21st Mar 2020', // Date Range
rangeStart: '03/15/2020', // range start day
rangeEnd: '03/21/2020', // range end day
},
{
id: 2,
week: 'Last Week',
displayText: '8th Mar - 14th Mar 2020',
rangeStart: '03/08/2020',
rangeEnd: '03/14/2020',
},
{
id: 3,
week: 'Week 15',
displayText: '1st Mar - 7th Mar 2020',
rangeStart: '03/07/2020',
rangeEnd: '03/01/2020',
},
{
id: 4,
week: 'Week 14',
displayText: '23rd Feb - 29th Feb 2020',
rangeStart: '02/29/2020',
rangeEnd: '02/01/2020',
},
];
So the function will take mostly three parameters
- Start day of the week // default value sunday
- End day of the week //default value saturday
- Weeks totally //default value 4
getDateRangeList = (startDay = 'Sunday', endDay = 'Saturday', weeks = 4) => {
let rangeDays = 7; // diff bw start day and end day
let weeksToShow = Array.from({ length: weeks }, (_, i) => i + 1);
let result = weeksToShow.map((week) => {
let obj = {};
obj['id'] = week;
var startDate = new Date();
startDate.setDate(week === 1 ? startDate.getDate() : startDate.getDate() - 7 * week);
obj['rangeStart'] = startDate.toISOString().split('T')[0];
var endDate = new Date();
endDate.setDate(endDate.getDate() - 7 * week);
obj['rangeEnd'] = endDate.toISOString().split('T')[0];
return obj;
});
return result;
};
What is the best approach to this result?