如何使用jq将不同数组的对应字段合并为items对象数组
你之前的写法只能拿到第一个元素,是因为first仅会提取数组的首个元素,没有对全量索引做遍历处理。
正确的jq实现语句
jq '{items: ([.name, .age, .town] | transpose | map({name: .[0], age: .[1], town: .[2]}))}'
实现逻辑
- 第一步将
name、age、town三个字段的数组合并为二维数组:[.name, .age, .town] - 第二步调用
transpose函数对二维数组按索引转置,转置后每个子数组对应同一个索引位置的三个属性值 - 第三步用
map遍历所有子数组,将子数组的第0、1、2位元素分别赋值给name、age、town字段,生成单个用户对象 - 最后把生成的用户对象数组封装到
items字段,即可得到你需要的输出结构
内容的提问来源于stack exchange,提问作者HRVSTR
相关产品推荐
相关产品推荐

