Javascript 如何合并对象数组中的重复数据值

Javascript 如何合并对象数组中的重复数据值,javascript,Javascript,如何在js中合并数组 例如,我有这样的数组 [{ "team": team1, "groupname": "group1", "emp-data": [{ "id": 1, "name": "name1", }], }, { "team": team1, "groupname": "group1", "emp-data": [{ "id": 2, "name": "name2"

如何在js中合并数组

例如,我有这样的数组

[{
    "team": team1,
    "groupname": "group1",
    "emp-data": [{
        "id": 1,
        "name": "name1",
    }],
},
{
    "team": team1,
    "groupname": "group1",
    "emp-data": [{
        "id": 2,
        "name": "name2",
    }],
},
{
    "team": team2,
    "groupname": "group1",
    "emp-data": [{
        "id": 3,
        "name": "name3",
    }],
}],
我想要这样的输出 -我想将emp数据推送到同一个团队和同一个组名中

[{
    "team": team1,
    "groupname": "group1",
    "emp-data": [{
        "id": 1,
        "name": "name1",
    },{
        "id": 2,
        "name": "name2",
    }],
},
{
    "team": team2,
    "groupname": "group1",
    "emp-data": [{
        "id": 3,
        "name": "name3",
    }],
}]

我尝试循环数组并使用if-else将其推入检查,但仍然不起作用

您可以使用
.reduce
将每个
团队
组名
映射到新对象中的一个键,该键保存您的累积对象。然后,您可以使用
Object.values
获取累积对象:

const arr=[{team:“team1”,groupname:“group1”,“emp data:{id:1,name:“name1”},{team:“team1”,groupname:“group1”,“emp data:{id:2,name:“name2”},{team:“team2”,groupname:“group1”,“emp data:{id:3,name:“name3”}];
const res=Object.values(arr.reduce((acc,{team,groupname,…rest})=>{
const key=`${team}-${groupname}`;
常量empData=rest[“emp数据”];
如果(!(输入acc)){
acc[key]={team,groupname,…rest};
acc[键][“emp数据”]=[];
}
acc[键][“emp数据”].push({…empData});
返回acc;
}, {}));

控制台日志(res)
这将合并具有相同
团队
组名

const团队=[{
“团队”:“团队1”,
“groupname”:“group1”,
“环境管理计划数据”:{
“id”:1,
“名称”:“名称1”,
},
},
{
“团队”:“团队1”,
“groupname”:“group1”,
“环境管理计划数据”:{
“id”:2,
“名称”:“名称2”,
},
},
{
“团队”:“团队2”,
“groupname”:“group1”,
“环境管理计划数据”:{
“id”:3,
“名称”:“名称3”,
},
}
]
const_teams={};
teams.forEach(团队=>{
const merged_team=merged_teams[team.team+team.groupname];
如果(!合并团队){
合并的团队[team.team+team.groupname]=团队;
团队[“emp数据”]=[团队[“emp数据”]]
回来
}
合并团队[“emp数据”]。推送(团队[“emp数据”])
});

console.log(Object.values(merged_teams))
嗯,您想要的输出是无效的。是否希望
emp数据
位于一个数组中?是否可能有两个对象具有相同的
团队
,但不同的
组名
?可以@Ace@Ach
emp数据
应该成为一个数组吗?哦,是的,我很抱歉,谢谢。我会更新我的问题,我会尝试查看reduce数组