I have some feature to develop.
I have array with data that contains tasks. Each task have taskEndDate key with value formatted as ( YYYY-MMM-DD ) and it looks like :
[
{
"id": "1616193050660",
"isExpired": false,
"isFinished": false,
"subTasks": [
"Voda redbull ",
"Wiskey Coca-Cola "
],
"taskCreationDate": "2021-Jun-12",
"taskEndDate": 2021-Jun-15,
"taskTitle": "Drink somethig",
"taskType": "BAR"
},
{
"id": "1616193050660",
"isExpired": false,
"isFinished": false,
"subTasks": [
"Voda redbull ",
"Wiskey Coca-Cola "
],
"taskCreationDate": "2021-Jun-12",
"taskEndDate": 2021-Jun-15,
"taskTitle": "Drink somethig",
"taskType": "BAR"
},
{
"id": "1616193050660",
"isExpired": false,
"isFinished": false,
"subTasks": [
"Voda redbull ",
"Wiskey Coca-Cola "
],
"taskCreationDate": "2021-Jun-13",
"taskEndDate": 2021-Jun-18,
"taskTitle": "Drink somethig",
"taskType": "BAR"
}
]
I need to create new array of object that will in next format.
newArray = [{
title: taskEndDate,
data: all tasks that contain same taskEndDate as title
}];
As you can see, the taskEndDate can be same value in few tasks, so I won't to render the title each times, but only once.
For now , I'm doing it hardcoded and then putting the sortedData
to <SectionList/>
:
const sortedData = [
{
title: 'Previous',
data: data.filter((task) => moment().format('YYYY-MM-DD') > moment(task.taskEndDate).format('YYYY-MM-DD')),
},
{
title: `Today - ${moment().format('MMMM-DD')}`,
data: data.filter((task) => moment().format('YYYY-MM-DD') === moment(task.taskEndDate).format('YYYY-MM-DD')),
},
{
title: 'Tomorrow',
data: data.filter((task) => moment().add(1, 'd').format('YYYY-MM-DD') === moment(task.taskEndDate).format('YYYY-MM-DD')),
},
{
title: moment().add(2, 'd').format('YYYY-MM-DD'),
data: data.filter((task) => moment().add(2, 'd').format('YYYY-MM-DD') === moment(task.taskEndDate).format('YYYY-MM-DD')),
},
{
title: 'Future',
data: data.filter((task) => moment().add(2, 'd').format('YYYY-MM-DD') < moment(task.taskEndDate).format('YYYY-MM-DD')),
},
];
How can I do it generic ti all dates?