Вы также можете использовать карту и уменьшить вместо циклов для этого:
var date = [{ date: '24.05.2019' },{ date: '27.05.2019' },{ date: '30.05.2019' },{ date: '01.06.2019' },{ date: '02.06.2019' },{ date: '05.06.2019' },{ date: '07.06.2019' },{ date: '24.05.2020' }];
var monthNames = ['January','February','March','April','May','June','July','August','September','October','November','December',];
console.log(
[
...date
.map(d => d.date.split('.').map(Number))
.sort(
(a, b) => a[2] - b[2] || a[1] - b[1] || a[0] - b[0]
)
.reduce(
(result, [d, m, y]) =>
result.set(
`${monthNames[m]} ${y}`,
(
result.get(`${monthNames[m]} ${y}`) || []
).concat(d)
),
new Map()
)
.entries(),
].map(([ym, days]) => `${days.join(',')} ${ym}`)
);