首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将相关项分组,然后将它们合并,并将一些属性累加到数组中。

将相关项分组,然后将它们合并,并将一些属性累加到数组中。
EN

Stack Overflow用户
提问于 2021-08-25 13:28:11
回答 1查看 105关注 0票数 1

有一个JSON,如下所示

代码语言:javascript
复制
[
  {
    "first": "foo",
    "last": "bar",
    "roll": "32",
    "subject": "maths"
  },
  {
    "first": "joe",
    "last": "mighty",
    "roll": "31",
    "subject": "english"
  },
  {
    "first": "foo",
    "last": "bar",
    "roll": "32",
    "subject": "english"
  },
  {
    "first": "joe",
    "last": "mighty",
    "roll": "31",
    "subject": "maths"
  },
  {
    "first": "foo",
    "last": "bar",
    "roll": "32",
    "subject": "science"
  }
]

unique_by(.first,.last,.roll)将删除其他主题条目。我希望将“subject”转换为包含源JSON数组中所有值的数组。如何使用jq来创建嵌套的主题数组,如下所示,

代码语言:javascript
复制
[
  {
    "first": "foo",
    "last": "bar",
    "roll": "32",
    "subject": ["maths", "english", "science"]
  },
  {
    "first": "joe",
    "last": "mighty",
    "roll": "31",
    "subject": ["english", "maths"]
  }
]
EN

回答 1

Stack Overflow用户

发布于 2021-08-25 14:51:23

基于Oguz的出色答案的变体:

代码语言:javascript
复制
  group_by(.first, .last, .roll)
| map( map(.subject) as $subject
     | .[0]
     | {first, last, roll, $subject})

收集相关项目(按第一、最后和滚动分组),并将每个集合缩减为单个项目:

  • 首先,我们把所有的研究对象都放入了$subject
  • 将第一项作为“模板”,但使用.subject重写$subject键。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68923838

复制
相关文章

相似问题

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