Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript基于动态数据合并多个对象_Javascript_Arrays_Ecmascript 6 - Fatal编程技术网

如何使用Javascript基于动态数据合并多个对象

如何使用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

变量数组有多个对象,所以我想根据重复的id和其他值合并对象,这些值将分配给提供对象。如何做到这一点?。。提前谢谢

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分组和店名分组如果你立即开始提供一系列优惠(即使只有一个),会容易得多。可能吗?