“包含”的语义一点也不简单。一般来说,最好使用“索引”来测试数组是否具有特定值,例如
.fruit | index( "orange" )
但是,如果感兴趣的项本身就是一个数组,则一般形式:
ARRAY | index( [ITEM] )
应该使用,例如:
[1, [2], 3] | index( [[2]] ) #=> 1
IN/1
如果你的jq有IN/1
那么更好的解决方案是使用它:
.fruit as $f | "orange" | IN($f[])
如果你的jq有first/1
(和 jq 1.5 一样),那么这里是一个快速定义IN/1
to use:
def IN(s): first((s == .) // empty) // false;
any(_;_)
另一种有时更方便的有效替代方法是使用any/2
, e.g.
any(.fruit[]; . == "orange")
或等价:
any(.fruit[] == "orange"; .)