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

如何用jq按顺序合并两个JSON对象列表中的对应对象?

同步迭代两个对象列表并合并对应对象

需求:同步迭代两个对象列表,将对应位置的对象合并为一个新对象,两个列表的对象无重复键,可直接转换为数组处理。

第一个输入对象列表

{
  "k11": "v111",
  "k12": "v112"
}
{
  "k11": "v121",
  "k12": "v122"
}
{
  "k11": "v131",
  "k12": "v132"
}

第二个输入对象列表

{
  "k21": "v211",
  "k22": "v212"
}
{
  "k21": "v221",
  "k22": "v222"
}
{
  "k21": "v231",
  "k22": "v232"
}

期望输出对象列表

{
  "k11": "v111",
  "k12": "v112",
  "k21": "v211",
  "k22": "v212"
}
{
  "k11": "v121",
  "k12": "v122",
  "k21": "v221",
  "k22": "v222"
}
{
  "k11": "v131",
  "k12": "v132",
  "k21": "v231",
  "k22": "v232"
}

解决方案示例

Python实现

将两个对象列表转换为数组后,用zip同步迭代对应位置的对象,通过字典解包合并:

list1 = [
    {"k11": "v111", "k12": "v112"},
    {"k11": "v121", "k12": "v122"},
    {"k11": "v131", "k12": "v132"}
]

list2 = [
    {"k21": "v211", "k22": "v212"},
    {"k21": "v221", "k22": "v222"},
    {"k21": "v231", "k22": "v232"}
]

result = [{**obj1, **obj2} for obj1, obj2 in zip(list1, list2)]

# 输出合并后的对象
for item in result:
    print(item)

输出结果:

{'k11': 'v111', 'k12': 'v112', 'k21': 'v211', 'k22': 'v212'}
{'k11': 'v121', 'k12': 'v122', 'k21': 'v221', 'k22': 'v222'}
{'k11': 'v131', 'k12': 'v132', 'k21': 'v231', 'k22': 'v232'}

JavaScript实现

使用map方法遍历第一个列表,同时通过索引获取第二个列表对应位置的对象,用对象展开语法合并:

const list1 = [
    {"k11": "v111", "k12": "v112"},
    {"k11": "v121", "k12": "v122"},
    {"k11": "v131", "k12": "v132"}
];

const list2 = [
    {"k21": "v211", "k22": "v212"},
    {"k21": "v221", "k22": "v222"},
    {"k21": "v231", "k22": "v232"}
];

const result = list1.map((obj, idx) => ({...obj, ...list2[idx]}));

console.log(result);

输出结果:

[
  { k11: 'v111', k12: 'v112', k21: 'v211', k22: 'v212' },
  { k11: 'v121', k12: 'v122', k21: 'v221', k22: 'v222' },
  { k11: 'v131', k12: 'v132', k21: 'v231', k22: 'v232' }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:52:50