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

Node.js中如何将多键对象数组合并为单键数组

合并JSON对象中多键对应的数组成一个统一数组

没问题,我来帮你搞定这个合并数组的需求~ 你需要把JSON对象里不同键对应的订单数组合并到一个统一的键下,对吧?这里有几种简单的Node.js实现方式,看你需求选就行:

先明确你的数据场景

假设你的原始数据是这样的(我给你补全了几个示例键,方便演示):

const originalData = {
  "out-for-delivery": [
    {
      "order_id": 1,
      "address": {
        "user_id": 1,
        "first_name": "Mark",
        "last_name": "Stevauh",
        "landmark": "Krti",
        "mobile": "123456789",
        "type": "work",
        "city_id": 4644,
        "postcode": 0,
        "address_type": "address",
        "locker_id": 0,
        "added_on": "2018-01-01T00:00:00"
      }
    }
  ],
  "delivered": [
    {
      "order_id": 2,
      "address": {
        "user_id": 2,
        "first_name": "Jane",
        "last_name": "Doe",
        "landmark": "Central Park",
        "mobile": "987654321",
        "type": "home",
        "city_id": 4645,
        "postcode": 10001,
        "address_type": "address",
        "locker_id": 0,
        "added_on": "2018-01-02T00:00:00"
      }
    }
  ],
  "processing": [
    {
      "order_id": 3,
      "address": {
        "user_id": 3,
        "first_name": "John",
        "last_name": "Smith",
        "landmark": "Downtown",
        "mobile": "555555555",
        "type": "work",
        "city_id": 4646,
        "postcode": 90001,
        "address_type": "address",
        "locker_id": 0,
        "added_on": "2018-01-03T00:00:00"
      }
    }
  ]
};

方法1:ES6+简洁写法(推荐)

如果你的Node.js版本支持ES2019及以上(一般Node.js 11+都支持),用Object.values()加Array.flat()一步到位:

// 提取所有键对应的数组,合并成一维数组
const mergedOrders = Object.values(originalData).flat();

// 把合并后的数组放到你想要的键下,比如"all-orders"
const result = {
  "all-orders": mergedOrders
};

console.log(result);

方法2:兼容旧Node.js版本

如果你的Node.js版本比较旧(比如低于11.0.0),用Array.concat()来实现合并:

// 用concat把多个数组合并成一个
const mergedOrders = [].concat.apply([], Object.values(originalData));

// 生成最终结果
const result = {
  "all-orders": mergedOrders
};

额外需求:保留原始数据同时添加合并键

如果你想保留原来的所有键值对,同时新增合并后的数组,可以用扩展运算符:

const mergedOrders = Object.values(originalData).flat();

const result = {
  ...originalData, // 保留原有的所有键和数组
  "all-orders": mergedOrders // 新增合并后的键
};

原理说明

  • Object.values(originalData)会把原始对象中所有键对应的值(也就是各个订单数组)提取成一个二维数组,比如[[订单1], [订单2], [订单3]]
  • flat()或者concat.apply()的作用是把这个二维数组扁平化,变成一维的订单数组[订单1, 订单2, 订单3]
  • 你可以把"all-orders"改成任何你需要的键名,比如"merged-orders"都行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:48:59