Javascript 按对象的属性重新组合对象数组

Javascript 按对象的属性重新组合对象数组,javascript,typescript,Javascript,Typescript,我有一个对象数组(Employee{role:string,members:string[])) 数组=[{ 角色:'医生', 全名:“x” }, { 角色:'护士', 全名:“y” }, { 角色:'医生', 全名:“z” }] 我想在typescript中的一个新数组(结果)中按角色对对象进行分组 结果=[{ 角色:'医生', 成员:['x','z'] } { 角色:'护士', 成员:['y'] } } 我的代码: result=array.map(函数(pemp:any){ if(!a

我有一个对象数组(
Employee{role:string,members:string[])

数组=[{
角色:'医生',
全名:“x”
}, {
角色:'护士',
全名:“y”
}, {
角色:'医生',
全名:“z”
}]
我想在typescript中的一个新数组(结果)中按角色对对象进行分组

结果=[{
角色:'医生',
成员:['x','z']
} {
角色:'护士',
成员:['y']
}
}
我的代码:

result=array.map(函数(pemp:any){
if(!array.some)(函数(el:any){
返回el.role===pemp.role;
})) {
返回新员工(pemp.role、pemp.fullName);
}否则{
var pos=this.result.map(函数(e:any){
返回e.role;
}).indexOf(pemp.role);
this.result[pos].members.push(pemp.fullName)
}
});

您可以尝试以下方法:

var数据=[{
角色:'医生',
全名:“x”
}, {
角色:'护士',
全名:“y”
}, {
角色:'医生',
全名:“z”
}];
var obj={};
data.forEach(功能(项){
如果(!obj[item.role])obj[item.role]=[];
obj[item.role].push(item.fullName);
});
var result=Object.keys(obj.map)(函数(k){
返回{role:k,members:obj[k]}
});
document.getElementById(“结果”).innerHTML=JSON.stringify(结果,0,4)

虽然这不是typescript中的解决方案,但您可以使用单个循环和临时对象作为分组角色的结果数组的引用

var数组=[{role:'doctor',fullName:'x'},{role:'nurse',fullName:'y'},{role:'doctor',fullName:'z'}],
结果=[];
array.forEach(函数(a){
如果(!此[a.role]){
this[a.role]={role:a.role,成员:[]};
结果推(这个[角色]);
}
此[a.role].members.push(a.fullName);
},Object.create(null));

console.log(result);
可能重复的我认为这不是typescript问题。这是关于你的javascript编码技能。感谢Nina的解释!!我用typescript转换了你的解决方案,但它仍然不起作用。我仍然被阻止:(对不起,我对typescript一无所知。非常感谢你的帮助。谢谢Nina:)