Кажется ли это меньше, чем бред?
[1,2,3,4] as $acceptable
| .potato as $k
| select( any($acceptable[]; . == $k) )
Если ваш jq имеет IN/1
, вы можете пропустить $k
:
[1,2,3,4] as $acceptable
| select(.potato | IN($acceptable[]))
Этот стиль позволяет легко передавать $acceptable
в качестве параметра командной строки, например.
Искушение
Легко поддаться искушению простотой решения только для выбора, такого как:
[1,2,3,4] as $acceptable
| select($acceptable[] == .potato)
Это было бы хорошо при определенных обстоятельствах, например, если $acceptable
является коротким и не содержит дубликатов (при условии, что мы хотим семантику any
). Но any
и IN
имеют семантику короткого замыкания, которая может быть желательна, например для эффективности.