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?
 
     
     
    