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

关于vector.dev VLR中动态键遍历与数组元素修改的技术咨询

问题1:获取Meta中后缀为.container.name的键值

针对meta块中前缀随机但后缀固定的键,可通过提取键数组+筛选匹配后缀的方式解决,规避硬编码键名的局限性:

// 将meta的所有键转为数组,筛选出以".container.name"结尾的键
target_keys = filter(map_keys(.meta), |key| ends_with(key, ".container.name"))
// 取筛选后的第一个键(假设这类键唯一),从meta中取值赋值给.name
.name = .meta[target_keys[0]]

逻辑说明:

  • map_keys(.meta):把meta对象的所有键转换为字符串数组,解决for_each要求输入数组的报错问题
  • filter(..., ends_with(...)):精准过滤出符合后缀规则的目标键
  • 若存在多个匹配键,可遍历target_keys数组批量处理,此处默认仅取第一个匹配值

问题2:批量删除Vulns数组中嵌套的staticVar3并填充.name

Vector的remap语言中for是保留关键字,不能直接使用,改用map遍历数组,结合map_values处理嵌套的随机键:

// 遍历vulns数组,逐个处理每个漏洞对象
.vulns = map(.vulns, |vuln| {
  // 处理staticVar下的所有随机键,批量删除每个键对应的staticVar3
  cleaned_static_var = map_values(vuln.staticVar, |inner_obj| del(inner_obj, "staticVar3"))
  
  // 获取staticVar下的所有随机键,此处取第一个作为.name的值(可按需调整为拼接/其他逻辑)
  random_keys = map_keys(vuln.staticVar)
  new_name = random_keys[0]

  // 合并原对象、处理后的staticVar和新的name字段
  merge(vuln, {
    staticVar: cleaned_static_var,
    name: new_name
  })
})

逻辑说明:

  • map(.vulns, ...):遍历vulns数组,对每个元素执行自定义处理逻辑
  • map_values(vuln.staticVar, ...):遍历staticVar下的所有值(即各个randomVar对应的对象),批量删除staticVar3字段
  • map_keys(vuln.staticVar):提取所有随机键名用于填充.name,若需要拼接多个键可使用join(random_keys, ",")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:00:06