arrays - 如何使用jq检查数组中是否存在元素

标签 arrays json bash membership jq

我有一个数组,我需要检查该数组中是否存在元素,或者使用以下方法从数组中获取该元素 jq, fruit.json:

{
    "fruit": [
        "apple", 
        "orange",
        "pomegranate",
        "apricot",
        "mango"
    ]
}


cat fruit.json | jq '.fruit .apple' 

不工作

最佳答案

“包含”的语义一点也不简单。一般来说,最好使用'index'来测试数组是否具有特定值,例如

.fruit | index( "orange" )

但是,如果感兴趣的项目本身是一个数组,一般形式:

 ARRAY | index( [ITEM] )

应该使用,例如:

[1, [2], 3] | index( [[2]] )  #=> 1

输入/1

如果您的 jq 有 IN/1 那么更好的解决方案是使用它:

.fruit as $f | "orange" | IN($f[])

如果您的 jq 有 first/1(就像 jq 1.5 一样),那么这里是要使用的 IN/1 的快速定义:

def IN(s): first((s == .) // empty) // false;

任意(_;_)

另一种有时更方便的有效替代方法是使用any/2,例如

any(.fruit[]; . == "orange")

或等同于:

any(.fruit[] == "orange"; .)

关于arrays - 如何使用jq检查数组中是否存在元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43259563/

相关文章:

javascript - 如何动态导航javascript多维数组?

android - Espresso 测试时如何从 Asset 文件夹中读取 json 文件?

sorting - 在 Mac OS 10.6 上获得排序的、人类可读的 du 输出的最有效方法是什么?

bash 别名不自动完成与别名相同

linux - 如何使 bash 脚本按特定编号对文件夹中的文件进行分类

c# - const 多维数组初始化

javascript - 从 Typescript/Javascript 中的平面数组构建树数组(3 维)

arrays - XCode 6 - SWIFT - 访问数组中的多个项目

arrays - 防止在循环遍历另一个数组时将重复对象存储在数组中

php - 将 JSON 解码为 PHP 数组,删除相同的条目并编码回 PHP