首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在数组迭代中引入外部值

如何在数组迭代中引入外部值
EN

Stack Overflow用户
提问于 2022-04-01 14:01:36
回答 2查看 104关注 0票数 0

我有一个JSON的形状

代码语言:javascript
运行
复制
[
  {
    a:1,
    b: [2,3]
  },
  {
    a:4,
    b: [5,6]
  }
]

我想要改变形状

代码语言:javascript
运行
复制
[
  [
    {
      a: 1,
      b: 2,
    },
    {
      a: 1,
      b: 3,
    },
  ],
  [
    {
      a: 4,
      b: 5,
    },
    {
      a: 4,
      b: 6,
    },
  ],
]

也就是说,我想在数组中引入字段a的值。

我怎么能用jq做这件事?

EN

回答 2

Stack Overflow用户

发布于 2022-04-01 15:47:41

试试这个:

代码语言:javascript
运行
复制
jq 'map([{a,b:.b[]}])'

正如@pmf所指出的,您还可以更新对象:

代码语言:javascript
运行
复制
jq 'map([.b=.b[]])'
票数 2
EN

Stack Overflow用户

发布于 2022-04-01 14:10:20

您可以使用变量绑定as迭代这些项。

然后更新.b以使其项的值使用更新操作符 |=

代码语言:javascript
运行
复制
jq 'map([.b[] as $b | .b |= $b])'

演示

或者根据收集到的数据创建全新的对象:

代码语言:javascript
运行
复制
jq 'map(.a as $a | [.b[] as $b | {$a,$b}])'

演示

代码语言:javascript
运行
复制
[
  [
    {
      "a": 1,
      "b": 2
    },
    {
      "a": 1,
      "b": 3
    }
  ],
  [
    {
      "a": 4,
      "b": 5
    },
    {
      "a": 4,
      "b": 6
    }
  ]
]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71708143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档