Мое решение.
JavaScript:
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);