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

技术问询:拆分主数组并重新合并,合并cart_details同ID子数组

解决方案:合并相同ID的Cart Details记录

我来帮你搞定这个数组合并的需求!核心目标就是把主数组中所有cart_details里ID相同的支付记录,归类到同一个父数组项的cart_details中,让同ID的记录都集中在一起。

步骤说明

  • 先遍历主数组,把所有cart_details子项按它们的id进行分组;
  • 再基于这些分组,重新构建最终的数组结构,每个分组对应一个父数组项,其cart_details包含该ID下的所有支付记录;
  • 如果父数组项本身有其他需要保留的属性(比如用户信息、订单号等),我们可以选择保留首个出现的属性值,或者根据需求合并。

代码实现

假设你的主数组结构如下(模拟示例):

const originalArray = [
  {
    parentId: "order_001",
    user: "Alice",
    cart_details: [
      { id: 101, product: "Laptop", amount: 999, payment: "credit" },
      { id: 102, product: "Mouse", amount: 29, payment: "debit" }
    ]
  },
  {
    parentId: "order_002",
    user: "Bob",
    cart_details: [
      { id: 101, product: "Laptop", amount: 899, payment: "paypal" },
      { id: 103, product: "Keyboard", amount: 49, payment: "credit" }
    ]
  },
  {
    parentId: "order_003",
    user: "Alice",
    cart_details: [
      { id: 102, product: "Mouse", amount: 35, payment: "paypal" },
      { id: 103, product: "Keyboard", amount: 59, payment: "debit" }
    ]
  }
];

下面是实现合并的代码:

// 1. 收集所有cart_details子项,按子项id分组
const groupedDetails = {};
originalArray.forEach(item => {
  item.cart_details.forEach(detail => {
    if (!groupedDetails[detail.id]) {
      // 初始化分组,同时保留父项的基础属性(这里取首个出现的父项属性)
      groupedDetails[detail.id] = {
        ...item,
        cart_details: []
      };
    }
    // 将当前子项加入对应分组的cart_details
    groupedDetails[detail.id].cart_details.push(detail);
  });
});

// 2. 将分组对象转换为数组,得到最终结果
const mergedArray = Object.values(groupedDetails);

console.log(mergedArray);

结果说明

运行上述代码后,mergedArray中的每个元素都会对应一个cart_details子项ID,其cart_details数组包含所有该ID的支付记录,同时保留了父项的基础属性(比如user、parentId,这里取的是该ID首次出现时的父项属性,如果你需要合并父项属性,可以根据需求修改这部分逻辑)。

举个例子,ID为101的支付记录会被合并到一个父项中:

{
  parentId: "order_001",
  user: "Alice",
  cart_details: [
    { id: 101, product: "Laptop", amount: 999, payment: "credit" },
    { id: 101, product: "Laptop", amount: 899, payment: "paypal" }
  ]
}

如果你的父数组结构或者合并需求有细微调整(比如需要按父项ID合并而不是子项ID),可以随时沟通调整代码~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:39:39