【问题标题】:JQ: Finding array index of object with specific attribute valueJQ:查找具有特定属性值的对象的数组索引
【发布时间】:2017-05-19 09:28:20
【问题描述】:

我有以下几点:

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

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

我尝试使用“select”和“keys”的组合,但这不起作用:

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

【问题讨论】:

    标签: arrays select indexing key jq


    【解决方案1】:

    这是众多可能性之一:

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

    稍微简单一点,但效率较低:

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

    如果您渴望使用 for 样式的循环,或者如果您想考虑一些事情:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多