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

如何用jq筛选字符串数组字段为输入数组超集的对象

使用jq筛选数组字段包含所有指定值的对象

需求说明

需要从JSON数组中筛选出field属性**同时精确包含"value-1"和"value-2"**的对象,排除仅包含其中一个值的情况。之前找到的示例大多是筛选包含至少一个指定值的对象,而jq的contains函数是子字符串匹配,无法满足精确匹配需求。

原始JSON数据

[
  {
    "field": ["value-1", "value-2", "value-3"]
  },
  {
    "field": ["value-1", "value-34"]
  },
  {
    "field": ["value-3", "value-1", "value-4", "value-5"]
  }
]

解决方案:jq命令

使用all结合IN实现精确匹配所有指定值:

jq '.[] | select(["value-1", "value-2"] | all(. as $v; $v | IN(.field[])))'

命令解释

  • .[]:遍历输入数组中的每一个对象
  • select(...):仅保留满足括号内条件的对象
  • ["value-1", "value-2"] | all(...):验证指定的所有值都符合后续匹配规则
  • . as $v; $v | IN(.field[]):将当前指定值存入变量$v,检查$v是否是.field数组中的精确元素(IN会做严格的相等匹配)

正确返回结果

{
  "field": ["value-1", "value-2", "value-3"]
}

注:你提供的示例返回结果中第三个对象并不包含"value-2",不符合筛选条件,因此正确结果仅包含第一个对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:22:42