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

如何合并对象中的两个数组并保留原键标识

为合并数组元素添加来源标识

现有如下包含数组的对象:

const mainObject = {
    user: [{
        a: "aaaa",
        b: "bbbb"
    }, {
        c: "cccc",
        d: "dddd"
    }],
    developer: [{
        e: "eeee",
        f: "ffff"
    }]
}

直接使用mainObject.user.concat(mainObject.developer)合并数组时,会丢失元素的来源键信息,合并结果如下:

[{
    a: "aaaa",
    b: "bbbb"
}, {
    c: "cccc",
    d: "dddd"
},{
    e: "eeee",
    f: "ffff"
}]

需求是为每个元素添加origin字段,标注其来源的键名,期望输出:

[{
    a: "aaaa",
    b: "bbbb",
    origin: "user"
}, {
    c: "cccc",
    d: "dddd",
    origin: "user"
},{
    e: "eeee",
    f: "ffff",
    origin: "developer"
}]

解决方案

可以通过遍历对象的键值对,为每个数组元素添加origin字段后再合并:

const merged = Object.entries(mainObject).flatMap(([key, arr]) => {
  return arr.map(item => ({ ...item, origin: key }));
});

代码说明

  1. Object.entries(mainObject) 将对象转换为键值对数组,格式为[['user', 数组], ['developer', 数组]]
  2. flatMap 遍历每个键值对,同时将处理后的子数组扁平化
  3. 对每个数组元素使用map,通过扩展运算符...保留原属性,同时添加origin字段并赋值为对应的键名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:48:12