JQ:查找具有特定属性值的对象的数组索引

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JQ:查找具有特定属性值的对象的数组索引相关的知识,希望对你有一定的参考价值。

我有以下内容:

{"arr":[{"Name":"web"},{"Name":"app"}]}

我需要找到属性“Name”中没有“app”的所有数组对象的数组索引。

我试图使用“选择”和“键”的组合,但这不起作用:

jq '.arr[] | select(.Name != "app") | keys'
答案

这是许多可能性中的一种:

.arr | range(0;length) as $i | select(.[$i].Name != "app") | $i

稍微简短但效率较低:

.arr | to_entries[] | select(.value.Name != "app") | .key

如果你渴望使用for-style循环,或者你想要想一些事情:

foreach .arr[] as $o (-1; .+1; select($o.Name != "app"))
另一答案

这是一个使用tostream的解决方案。

      tostream
    | if   .[0][-1] == "Name" and .[1] == "app"
      then .[0][-2]
      else  empty
      end

以上是关于JQ:查找具有特定属性值的对象的数组索引的主要内容,如果未能解决你的问题,请参考以下文章

查找是不是在列表中找到具有特定属性值的元素

如何根据查找具有特定值的实体在我的核心数据之间进行迭代

如何从对象数组中获取具有属性的列表,除非它包含具有特定值的另一个项目?

LINQ:获取包含具有特定名称和值的属性的数组中的对象

Linq 查询以返回具有特定属性值的嵌套数组

jQuery 查找具有特定属性值的特定类