我有一个JSON对象数组,我希望从中提取子集,使得.name
字段与一组输入字符串匹配。
例如,我想要实现以下目标。
jq -n '["a","b","c","d","e"] | map({name:.,foo:"bar"})' \
| jq 'map(select(.name=="a" or .name=="c"))'
我想到了以下解决方案,但是我的[...]
和add
的使用似乎缺少一些巧妙之处。
jq -n '["a","b","c","d","e"] | map({name:.,foo:"bar"})' \
| jq --arg name 'a c' '
[
( $name | split(" ") )[] as $name
| map( select( .name == $name ) )
| add
]'
此解决方案需要我对输入数组进行多次迭代,而非仅一次。有其他想法可以解决这个问题吗?
map(select(.name==($names|split(" ")[])))
- Jon