如何使用Javascript基于动态数据合并多个对象
变量数组有多个对象,所以我想根据重复的id和其他值合并对象,这些值将分配给提供对象。如何做到这一点?。。提前谢谢如何使用Javascript基于动态数据合并多个对象,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,变量数组有多个对象,所以我想根据重复的id和其他值合并对象,这些值将分配给提供对象。如何做到这一点?。。提前谢谢 var array = [ { id:1, shopname:'star salon', offid: 12, offname:'100% discount' }, { id:1, shopname:'star salon', offid: 16, offname:'Bi
var array = [
{
id:1,
shopname:'star salon',
offid: 12,
offname:'100% discount'
},
{
id:1,
shopname:'star salon',
offid: 16,
offname:'Billing Value discount'
},
{
id:3,
shopname:'trend beauty',
offid: 19,
offname:'Percentage Offer'
}
]
最后给出了以下输出:
var result = [
{
id:1,
shopname:'star salon',
offer : [
{
offid: 12,
offname:'100% discount'
},
{
offid: 16,
offname:'Billing Value discount'
}
]
},
{
id:3,
shopname:'trend beauty',
offer : [
{
offid: 19,
offname:'Percentage Offer'
}
]
}
]
您可以使用以下代码,该代码收集普通对象中的项,按id设置键,然后从中提取值:
var数组=[{id:1,店名:'star salon',offid:12,offname:'100%折扣'},{id:1,店名:'star salon',offid:16,offname:'Billing Value折扣'},{id:3,店名:'trend beauty',offid:19,offname:'Percentage Offer'}];
var result=Object.values(array.reduce((acc,{id,shopname,offid,offname})=>{
acc[id]=acc[id]|{id,店名,优惠:[]};
acc[id].offer.push({offid,offname});
返回acc;
}, {}));
控制台日志(结果)代码>
.as console wrapper{max height:100%!important;top:0;}
您可以使用此代码,它收集普通对象中的项,按id设置键,然后从中提取值:
var数组=[{id:1,店名:'star salon',offid:12,offname:'100%折扣'},{id:1,店名:'star salon',offid:16,offname:'Billing Value折扣'},{id:3,店名:'trend beauty',offid:19,offname:'Percentage Offer'}];
var result=Object.values(array.reduce((acc,{id,shopname,offid,offname})=>{
acc[id]=acc[id]|{id,店名,优惠:[]};
acc[id].offer.push({offid,offname});
返回acc;
}, {}));
控制台日志(结果)代码>
.as console wrapper{max height:100%!important;top:0;}
按id分组,或按名称分组?按id和店名分组如果您立即开始提供一系列优惠(即使只有一个),会容易得多。这是可能的吗?按id分组,还是按姓名分组?按id分组和店名分组如果你立即开始提供一系列优惠(即使只有一个),会容易得多。可能吗?