【发布时间】: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
我有以下几点:
{"arr":[{"Name":"web"},{"Name":"app"}]}
我需要找出属性“Name”中没有“app”的所有数组对象的数组索引。
我尝试使用“select”和“keys”的组合,但这不起作用:
jq '.arr[] | select(.Name != "app") | keys'
【问题讨论】:
标签: arrays select indexing key jq
这是众多可能性之一:
.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"))
【讨论】:
这是一个使用 tostream 的解决方案。
tostream
| if .[0][-1] == "Name" and .[1] == "app"
then .[0][-2]
else empty
end
【讨论】: