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

JQ按值分组合并对象:实现特定属性拼接而非覆盖

JQ按指定值分组合并时拼接特定属性的解决方案

当使用JQ按指定字段(如location)分组合并对象时,默认的add操作会让后续对象的属性覆盖前一个,若想让特定属性(如type)实现字符串拼接而非覆盖,可以通过以下两种方式实现:

方法一:通用合并逻辑(支持多属性自定义处理)

使用reduce遍历每组内的对象,针对目标属性做拼接处理,其他属性按需赋值:

group_by(.location) | map(
  reduce .[] as $item ({};
    .location = $item.location
    | .type += (if .type then "," else "" end) + $item.type
    | .host = $item.host
  )
)
  • 核心逻辑:初始化空对象后,逐个合并组内对象;type属性判断是否已有值,存在则先加分隔符再拼接新值,不存在则直接赋值
  • 优势:可灵活扩展其他属性的合并规则,适合同组内非目标属性可能存在差异的场景

方法二:简洁版(适合同组内非目标属性一致的场景)

如果同组内除了需要拼接的属性外,其他属性完全相同,可以直接取组内第一个对象,替换目标属性为所有值的拼接结果:

group_by(.location) | map(
  (.[].type | unique | join(",")) as $combinedType
  | .[0] | .type = $combinedType
)
  • 核心逻辑:先提取组内所有type值,去重后用逗号连接,再替换第一个对象的type属性
  • 优势:代码更简洁高效,适合非目标属性无差异的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:49:54