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

如何通过parent_product_id关联合并parent_product与variation_product列表

问题

我的variation_product包含parent_product_id属性,想要通过匹配该属性,把parent_product和variation_product合并成单一列表,具体怎么实现?

注:原始提供的JSON存在重复键的无效问题,实际有效JSON需将同键数组合并,修正后的数据结构如下:

{
  "parent_product": [
    {
      "parent_product_id": "sku01",
      "product_title": "product1"
    },
    {
      "parent_product_id": "sku02",
      "product_title": "product2"
    }
  ],
  "variation_product": [
    {
      "variation_product_id": "001",  
      "parent_product_id": "sku01",
      "user_id": "1"
    },
    {
      "variation_product_id": "002",  
      "parent_product_id": "sku02",
      "user_id": "2"
    }
  ]
}

预期合并结果:

{
   "parent_product": [
     {
        "parent_product_id": "sku01",
        "product_title": "product1",
        "variation_product_id": "001",
        "user_id": "1"
     },
     {
        "parent_product_id": "sku02",
        "product_title": "product2",
        "variation_product_id": "002",
        "user_id": "2"
     }
   ]
}
解决方案

以JavaScript为例,通过以下步骤实现合并:

基础实现方案

  1. 遍历parent_product数组,对每个父产品,在variation_product中找到parent_product_id匹配的变体产品;
  2. 合并父产品与匹配到的变体产品的属性,生成新对象;
  3. 收集所有合并后的对象,组成最终结果。

代码示例:

// 修正后的原始数据
const rawData = {
  "parent_product": [
    { "parent_product_id": "sku01", "product_title": "product1" },
    { "parent_product_id": "sku02", "product_title": "product2" }
  ],
  "variation_product": [
    { "variation_product_id": "001", "parent_product_id": "sku01", "user_id": "1" },
    { "variation_product_id": "002", "parent_product_id": "sku02", "user_id": "2" }
  ]
};

// 执行合并
const mergedResult = {
  parent_product: rawData.parent_product.map(parent => {
    const matchedVariation = rawData.variation_product.find(v => v.parent_product_id === parent.parent_product_id);
    return { ...parent, ...matchedVariation };
  })
};

console.log(JSON.stringify(mergedResult, null, 2));

大数据量优化方案

如果数据量较大,可先将variation_product转为以parent_product_id为键的映射表,把查找操作的时间复杂度从O(n)降为O(1):

// 构建变体产品映射表
const variationMap = rawData.variation_product.reduce((map, item) => {
  map[item.parent_product_id] = item;
  return map;
}, {});

// 执行合并
const mergedResult = {
  parent_product: rawData.parent_product.map(parent => ({
    ...parent,
    ...variationMap[parent.parent_product_id]
  }))
};

内容的提问来源于stack exchange,提问作者boyenec

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:01:05