Javascript合并并组合具有相同ID的对象

Javascript合并并组合具有相同ID的对象,javascript,merge,Javascript,Merge,我一直在尝试合并数据并得到以下结果: data = [{serviceID: 22, quantite: 120, typeConviveId: 6}, {serviceID: 23, quantite: 240, typeConviveId: 6}, {serviceID: 24, quantite: 100, typeConviveId: 7}, {serviceID: 25, quantite: 150, typeConviveId: 7}]

我一直在尝试合并数据并得到以下结果:

data = [{serviceID: 22, quantite: 120, typeConviveId: 6},
       {serviceID: 23, quantite: 240, typeConviveId: 6},
        {serviceID: 24, quantite: 100, typeConviveId: 7},
        {serviceID: 25, quantite: 150, typeConviveId: 7}]  
最后需要什么:

result: [ { "22": "120", "23": "240", "typeConviveId": "6"},
        { "24": "100", "25": "150", "typeConviveId": "7" } ] 

您可以在回调函数中使用array
reduce
&使用
findIndex
获取具有相同
typeConviveId
的对象
findIndex
将从累加器数组返回具有相同
findIndex
的对象的索引,累加器数组由
acc
表示。在
fiindex
is-1中,然后使用所需的键创建一个新对象,并将其推入累加器数组。如果已经存在具有相同
typeConviveId
的数组,则只需使用新键更新对象即可

let数据=[{
服务编号:22,,
数量:120,
typeConviveId:6
},
{
编号:23,,
数量:240,
typeConviveId:6
},
{
服务编号:24,,
数量:100,
typeConviveId:7
},
{
服务编号:25,,
数量:150,
typeConviveId:7
},
{
服务编号:25,,
数量:250,
typeConviveId:7
}
]
让newData=data.reduce(函数(acc,curr){
设findIndex=acc.findIndex(功能(项目){
return item.typeConviveId==curr.typeConviveId;
})
如果(findIndex==-1){
加速推({
typeConviveId:curr.typeConviveId,
[当前服务ID]:当前数量
})
}否则{
acc[findIndex][curr.serviceID]=curr.quantite
}
返回acc;
}, []);

console.log(newData)
您可以组合使用
数组.prototype.map
数组.prototype.filter
数组.prototype.reduce
,以及使用
[…新集(data.map(x=>x.typeConviveId))]进行重复消除的唯一
typeConviveId
列表:

const data=[{serviceID:22,quantite:120,typeConviveId:6},{serviceID:23,quantite:240,typeConviveId:6},{serviceID:24,quantite:100,typeConviveId:7},{serviceID:25,quantite:150,typeConviveId:7}];
const result=[…新集合(data.map(x=>x.typeConviveId))].map(
id=>数据
.filter(x=>x.typeConviveId==id)
.减少((acc,val)=>{
返回{…acc,
[val.serviceID]:''+val.quantite
}
}, {
typeConviveId:''+id
})
);

控制台日志(结果)到目前为止您尝试了什么?您是否需要一个通用的case函数,或者这些是您将始终拥有的唯一字段?(
serviceID
quantite
,和
typeConviveId
)家庭第一康奈索,也许当我们不在同一个子午线时,对不起,非常感谢康奈索,它太完美了!谢谢你准确的回答,brk!没有重复的关键点,结果很好