匹配第一个具有包含完全相同值的数组的对象(其长度应始终为 2)
例子:
[
{ "id": 242, "size": [500, 500] },
{ "id": 234, "size": [500, 1920] },
{ "id": 168, "size": [234, 1080] },
{ "id": 315, "size": [1080, 1920] },
{ "id": 366, "size": [1920, 1080] },
{ "id": 367, "size": [1920, 1080] }
]
width=1920
height=1080
# Should match:
# { id: 366, size: [1920, 1080] }
# Then extract id (easy, got this part)
我最好的尝试是使用 contains,但 contains 似乎不能接受超过 1 个参数:
echo $json | jq -r ".[] | select( [ .size[] | contains($width) ] | any ) | .id"
构造数组,将其与进行比较
.size
,然后使用first
仅获取第一个匹配项:演示
演示
输出: