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

JQ从列表提取多个子元素时如何避免生成叉乘结果

问题根源

出现叉乘结果是因为你在同一个对象构造表达式中两次使用了.Images[]展开数组:每一次.Images[]的迭代都会和另一个的迭代结果两两组合,2个元素的数组就会生成2*2=4条结果。

解决方案

你需要先遍历Images数组的单个元素,再将产品公共字段和单张图片的字段合并,避免重复展开数组,以下是两种可行写法:

写法1 变量存储公共字段(直观易读)

.Products[] | 
.SKU as $sku | 
.Description as $desc | 
.Images[] | 
{
  sku: $sku,
  desc: $desc,
  img_url: .FullUrl,
  img_angle: .Angle
}

写法2 用map()实现(对应你推测的解决方案方向)

.Products[] | 
{sku: .SKU, desc: .Description} as $prod | 
.Images | map($prod + {img_url: .FullUrl, img_angle: .Angle})[]

两种写法输出完全符合预期,不会出现交叉组合问题,也不需要依赖图片URL和角度的字段值关联逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:54:02