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

jq报错无法迭代null:如何获取GRCH38关联refpos的最小offset值?

获取嵌套refpos中GRCH38关联offset最小值的jq命令修复

问题场景

需要从每个嵌套的refpos数组中,筛选出assembly为GRCH38的条目,提取其offset并取最小值。现有命令能输出所有符合条件的offset,但使用map结合min函数时触发错误:

jq: error (at :1): Cannot iterate over null (null)

修复后的命令

基础版(仅在有匹配条目时返回最小值)

.refpos | map(select(.assembly == "GRCH38").offset) | select(length > 0) | min

兼容版(无匹配条目时返回null,避免报错)

.refpos | map(select(.assembly == "GRCH38").offset) // [] | if length > 0 then min else null end

错误原因解析

当refpos中没有任何assembly为GRCH38的条目时,map(select(.assembly == "GRCH38").offset)会返回null而非空数组。min函数只能处理数组类型,无法迭代null,因此抛出错误。

修复逻辑核心:

  1. 用// []将可能的null转换为空数组,确保后续操作对象为数组类型
  2. 调用min前判断数组是否有元素,避免空数组调用min导致新错误

示例验证

测试数据1(含GRCH38条目)

{
  "refpos": [
    {"assembly": "GRCH38", "offset": 150},
    {"assembly": "GRCH38", "offset": 80},
    {"assembly": "GRCh37", "offset": 220}
  ]
}

执行修复命令后返回:80

测试数据2(无GRCH38条目)

{
  "refpos": [
    {"assembly": "GRCh37", "offset": 220}
  ]
}

执行兼容版命令后返回:null(无报错)

内容的提问来源于stack exchange,提问作者Robin Rounthwaite

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 03:52:06