JSFiddle - React, Tailwind, and code Playground
JavaScript
let events = [
{
date: '2019-12',
event: 'name1'
},
{
date: '2019-12',
event: 'name2'
},
{
date: '2019-11',
event: 'name3'
},
{
date: '2019-11',
event: 'name4'
},
{
date: '2020-10',
event: 'name5'
},
{
date: '2020-10',
event: 'name6'
},
{
date: '2020-11',
event: 'name5'
},
{
date: '2020-11',
event: 'name6'
},
{
date: '2020-12',
event: 'name7'
},
{
date: '2020-12',
event: 'name8'
},
{
date: '2020-12',
event: 'name9'
},
];
let obj = {};
for (let elem of events) {
let [year, month] = elem.date.split("-");
if (obj[year] === undefined) {
obj[year] = {};
}
if (obj[year][month] === undefined) {
obj[year][month] = [];
}
for (let val in obj) {
if (val == year) {
for (let prop in obj[val]) {
if (prop == month) {
obj[val][prop].push(elem.event);
}
}
}
}
}
console.log(obj);