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

如何将累加quantity的orderItems拆分为对应数量的独立对象数组?

拆分订单项为独立商品对象的实现方案

原订单项数组中,商品项通过quantity字段累加数量,需要将每个项拆分为对应数量的独立对象,仅保留商品名称、描述和价格信息。

JavaScript 实现

const orderItems = [
  {
    "id": "cla7dnfln000mvprgde8b9ovh",
    "name": null,
    "price": 134,
    "quantity": 3,
    "orderId": "cla7dmh5v000ivprghh27g22z",
    "menuItemId": "cl9t45hry002uvpr9sp9jxl1t",
    "comments": null,
    "stock": null,
    "menuItem": {
      "id": "cl9t45hry002uvpr9sp9jxl1t",
      "image": "https://madre-cafe.com/wp-content/uploads/2021/11/logo-madre-cafe-header.svg",
      "name": "Especiales Item #2",
      "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
      "price": "134",
      "available": true,
      "menuCategoryId": "cl9t45hqu000tvpr9fjw67ype"
    }
  },
  {
    "id": "cla8ehie20000vpusxqvp0kcq",
    "name": null,
    "price": 223,
    "quantity": 1,
    "orderId": "cla7dmh5v000ivprghh27g22z",
    "menuItemId": "cl9t45hry0010vpr9q3pjo2kc",
    "comments": null,
    "stock": null,
    "menuItem": {
      "id": "cl9t45hry0010vpr9q3pjo2kc",
      "image": "https://madre-cafe.com/wp-content/uploads/2021/11/logo-madre-cafe-header.svg",
      "name": "Hot Cakes Item #2",
      "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
      "price": "223",
      "available": true,
      "menuCategoryId": "cl9t45hqu000nvpr9pwqkk3gj"
    }
  }
];

const splitOrderItems = orderItems.flatMap(item => {
  // 根据quantity生成对应数量的商品对象
  return Array.from({ length: item.quantity }, () => ({
    name: item.menuItem.name,
    description: item.menuItem.description,
    price: item.menuItem.price
  }));
});

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

代码说明

  • 使用flatMap遍历原数组,同时将每个项生成的子数组展开,避免嵌套结果
  • Array.from({ length: item.quantity })构造一个长度等于quantity的数组,用于生成对应数量的独立对象
  • 每个新对象仅保留menuItem中的name、description、price三个目标属性

Python 实现

import json

order_items = [
    {
        "id": "cla7dnfln000mvprgde8b9ovh",
        "name": None,
        "price": 134,
        "quantity": 3,
        "orderId": "cla7dmh5v000ivprghh27g22z",
        "menuItemId": "cl9t45hry002uvpr9sp9jxl1t",
        "comments": None,
        "stock": None,
        "menuItem": {
            "id": "cl9t45hry002uvpr9sp9jxl1t",
            "image": "https://madre-cafe.com/wp-content/uploads/2021/11/logo-madre-cafe-header.svg",
            "name": "Especiales Item #2",
            "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
            "price": "134",
            "available": True,
            "menuCategoryId": "cl9t45hqu000tvpr9fjw67ype"
        }
    },
    {
        "id": "cla8ehie20000vpusxqvp0kcq",
        "name": None,
        "price": 223,
        "quantity": 1,
        "orderId": "cla7dmh5v000ivprghh27g22z",
        "menuItemId": "cl9t45hry0010vpr9q3pjo2kc",
        "comments": None,
        "stock": None,
        "menuItem": {
            "id": "cl9t45hry0010vpr9q3pjo2kc",
            "image": "https://madre-cafe.com/wp-content/uploads/2021/11/logo-madre-cafe-header.svg",
            "name": "Hot Cakes Item #2",
            "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
            "price": "223",
            "available": True,
            "menuCategoryId": "cl9t45hqu000nvpr9pwqkk3gj"
        }
    }
]

split_order_items = []
for item in order_items:
    # 循环quantity次,生成对应数量的独立商品对象
    for _ in range(item["quantity"]):
        split_order_items.append({
            "name": item["menuItem"]["name"],
            "description": item["menuItem"]["description"],
            "price": item["menuItem"]["price"]
        })

print(json.dumps(split_order_items, indent=2))

代码说明

  • 外层循环遍历所有订单项,内层循环根据quantity数值重复创建商品对象
  • 每次内层循环生成一个仅包含目标属性的新对象,并添加到结果数组中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:01:18