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

如何基于条件修改jq数组值?将sitem最大值项的status改为100

解决方法:修改sitem值最大项的status字段

完整jq命令

jq '
.[] | [.main[] | {drink,sitem}] 
| map( .sindex = (1 + index | tostring) ) 
| map( .status = "10" )
| (map(.sitem | tonumber) | max) as $max_sitem
| map( if .sitem | tonumber == $max_sitem then .status = "100" else . end )
'

命令说明

  1. 基础数据处理:从原始JSON中提取main数组元素,生成包含drink、sitem的对象;为每个元素添加从1开始的字符串类型序号sindex;给所有元素设置初始status为"10"。
  2. 定位最大sitem值:将所有元素的sitem转换为数字后,提取最大值并保存为变量$max_sitem。
  3. 修改目标字段:遍历数组,判断每个元素的sitem(转数字后)是否等于$max_sitem,匹配项的status改为"100",其余项保持原样。

执行结果

输入原始JSON后,执行上述命令将输出期望结果:

[
  {
    "drink": "cola",
    "sitem": "10",
    "sindex": "1",
    "status": "10"
  },
  {
    "drink": "pepsi",
    "sitem": "20",
    "sindex": "2",
    "status": "100"
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:10:15