首页 > 解决方案 > 如何删除 Groovy 映射中的值

问题描述

说我有这张地图

def map = [:]
map.put("us-east-1", ["vol-66c16ec2", "vol-654ce2c1", "vol-01234567"])
map.put("us-east-2", ["vol-12345678", "vol-87654321", "vol-abcdefgh"])

这导致...

{
  "us-east-1" : [
    "vol-66c16ec2", "vol-654ce2c1", "vol-01234567"
  ],
  "us-east-2" : [
    "vol-12345678", "vol-87654321", "vol-abcdefgh"
  ]
}

我如何遍历地图,所以当 value = "vol-abcdefgh" 我想删除该条目时。所以伪代码是...

for (it=iterate_through_map) {
  if (it == "vol-abcdefgh") {
     remove_entry(it)
  }
}

结果地图现在是......

{
  "us-east-1" : [
    "vol-66c16ec2", "vol-654ce2c1", "vol-01234567"
  ],
  "us-east-2" : [
    "vol-12345678", "vol-87654321"
  ]
}

标签: groovy

解决方案


考虑以下内容(编辑:通过dmahapatro进行了优雅的改进):

def target = 'vol-abcdefgh'

def map2 = map.collectEntries { k, v -> [k, v - target] }

我已经确认它可以在 Jenkins 管道中工作(与扩展运算符不同*)。


推荐阅读