Javascript 如何合并对象数组中的重复数据值
如何在js中合并数组 例如,我有这样的数组Javascript 如何合并对象数组中的重复数据值,javascript,Javascript,如何在js中合并数组 例如,我有这样的数组 [{ "team": team1, "groupname": "group1", "emp-data": [{ "id": 1, "name": "name1", }], }, { "team": team1, "groupname": "group1", "emp-data": [{ "id": 2, "name": "name2"
[{
"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@Achemp数据
应该成为一个数组吗?哦,是的,我很抱歉,谢谢。我会更新我的问题,我会尝试查看reduce数组