I have an array of objects (Employee {role: string, members: string []}
)
array = [{
role: 'doctor',
fullName: 'x'
}, {
role: 'nurse',
fullName: 'y'
}, {
role: 'doctor',
fullName: 'z'
}]
and I want to group objects by role in a new array (result) in typescript
result = [{
role: 'doctor',
members: ['x', 'z']
} {
role: 'nurse',
members: ['y']
}
}
My code:
result = array.map(function(pemp: any) {
if (!array.some(function(el: any) {
return el.role === pemp.role;
})) {
return new Employee(pemp.role, pemp.fullName);
} else {
var pos = this.result.map(function(e: any) {
return e.role;
}).indexOf(pemp.role);
this.result[pos].members.push(pemp.fullName)
}
});