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

jq实现字典多数组按位置合并 避免默认排列组合的方法

jq多数组按索引配对合并方案

你遇到的笛卡尔积输出是jq迭代器的默认行为:当在同一对象构造中使用多个数组展开(.title[]、.link[])时,会遍历所有元素的排列组合。

要实现同索引元素配对,使用transpose函数即可实现,对应的jq表达式为:

jq '[.title, .link] | transpose | map({title: .[0], link: .[1]})'

执行逻辑说明

  • 第一步[.title, .link]:将两个待合并的数组合并为二维数组,输出结果为:
    [["title1","title2"], ["http://testapi.cn","http://testapi.org"]]
    
  • 第二步transpose:对二维数组按索引转置,将同位置的元素组合为子数组,输出结果为:
    [["title1","http://testapi.cn"], ["title2","http://testapi.org"]]
    
  • 第三步map({title: .[0], link: .[1]}):遍历转置后的子数组,将每个子数组的两个元素分别映射为对应字段,最终得到预期输出。

额外说明

如果待合并的数组长度不一致,使用transpose(false)可以忽略不匹配的索引项,避免报错。


内容的提问来源于stack exchange,提问作者bofa 1ex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:12:04