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

如何移动嵌套数组中的元素?附示例数据与预期输出

提取嵌套交易数据并扁平化数组

看来你是想把每个产品下的交易项单独拎出来,形成一个包含产品信息+交易详情的一维数组对吧?我给你写个简单直接的实现方案:

首先先确认你的原始数据:

let products = [
  {
    "product_name": "A",
    "_id": "5ace995c14a759325776aab1",
    "transactions": [
      { "_id": "5ad3a274ac827c165a510f99", "qty": 100, "price": 2000 },
      { "_id": "5ad3a274ac827c165a510f99", "qty": 80, "price": 1500 }
    ]
  },
  {
    "product_name": "B",
    "_id": "5ace995914a759325776aab0",
    "transactions": [
      { "_id": "5ad3a274ac827c165a510f9b", "qty": 80, "price": 1500 }
    ]
  }
];

用flatMap搭配map就能轻松搞定这种嵌套数组扁平化的需求,代码逻辑很直观:

const flattenedTransactions = products.flatMap(product => 
  product.transactions.map(transaction => ({
    // 单独保留产品的核心标识和名称,避免和交易ID冲突
    product_id: product._id,
    product_name: product.product_name,
    // 合并交易的所有详情
    ...transaction
  }))
);

执行这段代码后,你会得到符合预期的扁平化结果:

[
  {
    "product_id": "5ace995c14a759325776aab1",
    "product_name": "A",
    "_id": "5ad3a274ac827c165a510f99",
    "qty": 100,
    "price": 2000
  },
  {
    "product_id": "5ace995c14a759325776aab1",
    "product_name": "A",
    "_id": "5ad3a274ac827c165a510f99",
    "qty": 80,
    "price": 1500
  },
  {
    "product_id": "5ace995914a759325776aab0",
    "product_name": "B",
    "_id": "5ad3a274ac827c165a510f9b",
    "qty": 80,
    "price": 1500
  }
]

我特意把产品的ID重命名为product_id,这样就不会和交易自身的_id字段冲突。如果你的业务场景不需要区分两者,也可以直接展开产品的所有属性再覆盖,但分开存储会更稳妥,避免后续出现字段混淆的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:21:28