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

如何使用jq按索引对应合并两个数组,为对象元素新增inode字段

如何使用jq将一个数组的内容映射到另一个数组的对应值中?

可用实现方案

方案1:使用transpose配对(代码更简洁)

jq -s '[transpose[] | .[0] + {inode: .[1]}]' a.json b.json

逻辑说明

  • -s参数会将两个输入文件的JSON内容读取为一个外层数组,其中.[0]对应第一个对象数组,.[1]对应第二个inode字符串数组
  • transpose会将两个长度相同的数组按索引配对,生成[[对象1, inode1], [对象2, inode2], ...]的结构
  • 遍历每一组配对,给原有对象新增inode字段后重新组装为数组即可

方案2:使用to_entries按索引匹配

jq -s '.[0] as $obj_arr | .[1] as $inode_arr | $obj_arr | to_entries | map(.value + {inode: $inode_arr[.key]})' a.json b.json

逻辑说明

  • to_entries会将第一个数组转换为带索引的结构,每个元素为{"key": 索引值, "value": 原对象}
  • 遍历转换后的数组时,用当前元素的索引key取第二个数组中对应位置的inode值,合并到原对象中

原命令错误原因

你之前的写法错误修改了原有的path字段,且没有建立第一个数组元素和第二个数组索引的对应关系,导致赋值逻辑混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:24:03