You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中合并数组内同商品的规格信息生成新数组?

合并重复商品的尺码数据

你可以通过分组合并的方式实现这个需求,核心思路是把title和sku都相同的项归为一组,然后把每组的size合并成逗号分隔的字符串。下面是适合新手的实现代码:

const originalData = [
  {
    title: 'Nike Dunk Low Panda',
    sku: 'DD1391-100',
    size: '9 US',
  },
  {
    title: 'Nike Dunk Low Panda',
    sku: 'DD1391-100',
    size: '10 US',
  },
  {
    title: 'Nike Dunk Low Panda',
    sku: 'DD1391-100',
    size: '11 US',
  },
];

// 用reduce分组,先把相同title+sku的项归到一起
const grouped = originalData.reduce((acc, item) => {
  // 用title+sku作为唯一标识,避免重复分组
  const key = `${item.title}-${item.sku}`;
  if (!acc[key]) {
    // 如果是第一次遇到这个商品,复制基础属性,把size存成数组
    acc[key] = {
      title: item.title,
      sku: item.sku,
      sizes: [item.size]
    };
  } else {
    // 已经存在的商品,把当前size加到数组里
    acc[key].sizes.push(item.size);
  }
  return acc;
}, {});

// 把分组后的对象转成数组,并且把sizes数组转成逗号分隔的字符串
const newData = Object.values(grouped).map(item => ({
  ...item,
  size: item.sizes.join(', ')
}));

console.log(newData);

代码解释:

  • reduce方法可以遍历数组,同时构建一个临时的分组对象,用来存放每个唯一商品的数据
  • 用title + sku作为分组的键,确保只有完全相同的商品才会被合并
  • 最后用Object.values把分组对象转成数组,再通过map把尺码数组转成字符串格式

运行这段代码后,就能得到你想要的合并后数组啦。

内容的提问来源于stack exchange,提问作者me.gromov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 02:10:15