Вот один из способов, которым вы могли бы сделать это, используя Object.values и Array # lower :
const data = [
{'times':'07:50','name':'bojes'},
{'times':'07:50','name':'unknw1q2q'},
{'times':'09:50','name':'rafik'},
{'times':'11:50','name':'adit'},
{'times':'15:50','name':'adit'},
{'times':'15:50','name':'adrok'}
];
const groupByTimes = data => Object.values(data.reduce((data, {times, name}) => {
if (data[times]) data[times].name.push(name);
else data[times] = {times, name: [name]};
return data;
}, {}));
console.log(groupByTimes(data));
В качестве альтернативы можно использовать Object.assign :
const data = [
{'times':'07:50','name':'bojes'},
{'times':'07:50','name':'unknw1q2q'},
{'times':'09:50','name':'rafik'},
{'times':'11:50','name':'adit'},
{'times':'15:50','name':'adit'},
{'times':'15:50','name':'adrok'}
];
const groupByTimes = data => Object.values(
data.reduce((data, {times, name}) => Object.assign({}, data, {
[times]: data[times]
? {times, name: [...data[times].name, name]}
: {times, name: [name]}
}), {})
);
console.log(groupByTimes(data));
Или с синтаксисом распространения объекта :
const data = [
{'times':'07:50','name':'bojes'},
{'times':'07:50','name':'unknw1q2q'},
{'times':'09:50','name':'rafik'},
{'times':'11:50','name':'adit'},
{'times':'15:50','name':'adit'},
{'times':'15:50','name':'adrok'}
];
const groupByTimes = data => Object.values(
data.reduce((data, {times, name}) => ({
...data,
[times]: data[times]
? {times, name: [...data[times].name, name]}
: {times, name: [name]}
}), {})
);
console.log(groupByTimes(data));