js如何合并对象数组中的某些项?

源数据:
data:[
{
parkId:1,
scheduleId:1,
hasStock:false
},
{
parkId:1,
scheduleId:2,
hasStock:false
},
{
parkId:1,
scheduleId:3,
hasStock:false
},
{
parkId:2,
scheduleId:1,
hasStock:false
},
{
parkId:2,
scheduleId:2,
hasStock:false
},
{
parkId:2,
scheduleId:3,
hasStock:false
}
]
期望是将parkId相同的项合并组成以下格式:
[
{
parkId:1,
date:[
{
scheduleId:1,
hasStock:false
},
{
scheduleId:2,
hasStock:false
},
{
scheduleId:3,
hasStock:false
}
]
},
{
parkId:2,
date:[
{
scheduleId:1,
hasStock:false
},
{
scheduleId:2,
hasStock:false
},
{
scheduleId:3,
hasStock:false
}
]
}
]
各位大佬有没有什么比较优雅的方式
慕神8447489
浏览 1285回答 2
2回答

www说

letaux={}letresult=[]data.forEach(obj=>{let{parkId,...restProps}=objif(!aux[parkId])aux[parkId]={parkId,data:[]}aux[parkId].data.push({...restProps})})for(letkeyinaux){result.push(aux[key])}使用aux作为一个储存中介,可以支持乱序

泛舟湖上清波郎朗

data.map(d=>d.parkId).filter((v,idx,arr)=>arr.indexOf(v)===idx).map(parkId=>{letd={parkId,data:[]}d.data=data.filter(item=>item.parkId===parkId).map(item=>{return{scheduleId:item.scheduleId,hasStock:item.hasStock}})returnd})不过谈不上优雅。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript