const users = [
{name: 'Anzor', date: new Date("1995-01-09T22:00:00Z")},
{name: 'Ashot', date: new Date("1995-09-01T22:00:00Z")},
];
const result = users.reduce((result, user) => {
result[user.date.getMonth()].push(user);
return result;
}, new Array(12).fill(0).reduce((o,_,O) => (o[O] = [], o), {}));
тогда вот так можно еще:
const users = [
{name: 'Anzor', date: new Date("1995-01-09T22:00:00Z")},
{name: 'Ashot', date: new Date("1995-09-01T22:00:00Z")},
];
const result = {...Array.from(Array(12),( _ , index) => []) }
users.forEach(e => result[e.date.getMonth()+1].push(e))
но у меня возник вопрос почему консоль time не верно замеряет время (первый всегда долше в не зависимости от алгоритма - можно их поменять местами поставить second вперед)
const users = [
{name: 'Anzor', date: new Date("1995-01-09T22:00:00Z")},
{name: 'Ashot', date: new Date("1995-09-01T22:00:00Z")},
];
console.time('first');
const result = users.reduce((result, user) => {
result[user.date.getMonth()].push(user);
return result;
}, new Array(12).fill(0).reduce((o,_,O) => (o[O] = [], o), {}));
console.timeEnd('first');
console.time('second');
const result1 = {...Array.from(Array(12),( _ , index) => []) }
users.forEach(e => result1[e.date.getMonth()].push(e) )
console.timeEnd('second');
console.log(result)