Итак, требование такое: у меня есть массив объектов (например, массив)
[
{ empDept: 'Engineering', empLoc: 'Pune', empName: 'John' },
{ empDept: 'Engineering', empLoc: 'Mumbai', empName: 'Harry' },
{ empDept: 'HR', empLoc: 'Pune', empName: 'Denis' },
{ empDept: 'Finance', empLoc: 'Mumbai', empName: 'Elvis' },
]
У меня будет функция, которая примет имя свойства в качестве параметра, для которого будет указан список сотрудников. будут сгруппированы. Итак, если значение входного параметра - empDept, то мне нужен результат, как показано ниже:
[
{
key: 'Engineering',
values: [
{ empDept: 'Engineering', empLoc: 'Pune', empName: 'John' },
{ empDept: 'Engineering', empLoc: 'Mumbai', empName: 'Harry' },
]
},
{
key: 'HR',
values: [
{ empDept: 'HR', empLoc: 'Pune', empName: 'Denis' },
]
},
{
key: 'Finance',
values: [
{ empDept: 'Finance', empLoc: 'Mumbai', empName: 'Elvis' },
]
}
]
Я использую оператор Rx Js groupBy для достижения этой цели. Я пробовал приведенный ниже код, но, похоже, он не дает желаемого результата:
this.groupedEmployees$ = employees$.pipe(
groupBy(person => person.empDept),
mergeMap(group => of({ key: group.key, values: group.pipe(mergeMap(x => toArray())) })),
);
Благодарю за вашу помощь.