微信小程序 将数组中带有相同产品名字组合在一起

原有格式

list=[
{ 
   produceName:'测试1',
   productCode:'cs01',
  num:1,
  ...
},
{ 
   produceName:'测试1',
   productCode:'cs01',
  num:4,
  ...
},
{ 
   produceName:'测试2',
   productCode:'cs02',
  num:1,
  ...
},
]

要变成的格式

 newList=[
{ 
   produceName:'测试1',
   child:[
    {
      productCode:'cs01',
  num:1,
  ...
     },
    {
     productCode:'cs01',
      num:4,
      ...
      }
    ]
},
{ 
   produceName:'测试2',
   child:[
      {
          productCode:'cs02',
          num:1,
          ...
          }
    ]
},
]

如何通过代码进行实现

const groupedProducts = [];
res.data.boxCodeInfoList.map(product => {
if (groupedProducts.some(grpProduct => grpProduct.proName === product.proName)) {
// 如果产品名已存在,则找到相应的产品对象,并添加码值和数值
const index = groupedProducts.findIndex(grpProduct => grpProduct.proName ===product.proName);
groupedProducts[index].childList.push({
    boxCode: product.boxCode,
    num: product.num,
    boxCode: product.boxCode,
    codeType: product.codeType,
    proCode: product.proCode,
    typeDesc: product.typeDesc
});
} else {
// 如果产品名不存在,则创建一个新的产品对象,并添加到数组中
groupedProducts.push({
     proName: product.proName,
    childList: [{
        boxCode: product.boxCode,
        num: product.num,
        boxCode: product.boxCode,
        codeType: product.codeType,
        proCode: product.proCode,
        typeDesc: product.typeDesc
   }],
});
}
});
console.log(groupedProducts)
// 码值列表
this.boxCodeInfoList = groupedProducts
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容