selectはJSONの配列を返すんじゃなくて配列をバラしたものを受け取ってバラしたまま返すから,以下の2つが明確に違い,mapに渡すことが出来るのは前者の方のはずなのだが…的な理解です.現状整理.
echo '[{"a":1},{"a":2},{"a":3}]' | jq '[.[] | select(.a >= 2)]'
#=>
# [
# {
# "a": 2
# },
# {
# "a": 3
# }
# ]
echo '[{"a":1},{"a":2},{"a":3}]' | jq '.[] | select(.a >= 2)'
#=>
# {
# "a": 2
# }
# {
# "a": 3
# }