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

如何用JQ基于size键替换数组值并保留原数组长度

JQ 按size替换数组元素并保持长度

假设你的输入JSON结构如下:

{
  "firstArray": [
    {"size": "S"},
    {"size": "M"},
    {"size": "XL"},
    {"size": "L"}
  ],
  "secondArray": [
    {"size": "S", "name": "Small"},
    {"size": "M", "name": "Medium"},
    {"size": "L", "name": "Large"}
  ]
}

期望输出(保持firstArray长度,匹配size替换为对应name,无匹配项保留原size):

{
  "firstArray": ["Small", "Medium", "XL", "Large"],
  "secondArray": [
    {"size": "S", "name": "Small"},
    {"size": "M", "name": "Medium"},
    {"size": "L", "name": "Large"}
  ]
}

直接用这条JQ命令就能实现:

(.secondArray | INDEX(.size; .name)) as $sizeMap | 
.firstArray |= map($sizeMap[.size] // .size)

关键逻辑说明

  1. 构建映射表:INDEX(.secondArray[]; .size) 把secondArray转换为以size为键、name为值的对象(比如{"S":"Small", "M":"Medium", "L":"Large"}),用变量$sizeMap存储。
  2. 遍历替换:.firstArray |= map(...) 对目标数组逐个处理,用元素的size去$sizeMap中查找对应name;//是JQ的默认值运算符,当找不到匹配项时,保留原size值(如果需要替换为空,改成// null即可)。

如果你的数组字段名不是firstArray/secondArray,替换成实际字段名就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:55:47