You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用jq获取过滤后的locations数组的长度?

用jq筛选数组后统计结果数量的正确方法

问题场景

你的JSON文件my_locations.json包含一个locations数组,需要筛选出同时拥有is_shop和has_parking_space属性的对象,并获取筛选后结果的总个数。

你尝试的命令:

$ jq ".locations[] | select(.is_shop and .has_parking_space) | length" my_locations.json

输出的是每个符合条件的对象自身的长度(如重复出现的13),而非筛选后数组的元素总数。

解决方法

需要先将筛选后的所有对象收集为一个新数组,再获取该数组的长度,有两种常用写法:

写法1:用数组包裹筛选结果

jq '[.locations[] | select(.is_shop and .has_parking_space)] | length' my_locations.json

通过[ ... ]把遍历筛选后的所有元素包裹成数组,再对这个数组取length,得到的就是元素总个数。

写法2:使用map函数(更简洁)

jq '.locations | map(select(.is_shop and .has_parking_space)) | length' my_locations.json

map函数会对数组中的每个元素执行筛选逻辑,返回新的结果数组,再取该数组的length即可得到统计数。

内容的提问来源于stack exchange,提问作者Leevi L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 17:15:40