在另一个数组中搜索数组的内容

时间:2010-10-26 22:50:27

标签: arrays groovy compare

我在SOAPUI中使用groovy,目前正在尝试确定来自2个端点的响应是否产生相同的结果。

我正在将我的XML响应转换为每个端点的数组,然后循环遍历Array1,然后循环Array2以确认Array1中是否存在每个项目。

这是非常丑陋的代码,我确实看过地图,但语法让我很困惑。我不确定如何创建这样的数组映射。如何在这样的实例中创建密钥?

与此同时,为了我的幸福......有一种更优雅的方式来实现以下目标:

def outerCount = 0
def innerCount = 0
for( i in arrayOfInvoicesSTAGE)
{

for( j in arrayOfInvoicesSTAGE2)
{

    if (i == j) 
    {
        log.info outerCount+" FOUND "+arrayOfInvoicesSTAGE[outerCount] + " in both responses"
        log.info "STAGE: "+i+" STAGE2: "+j
    }       
}
outerCount++
}

另外!奖金竖起大拇指!任何人都可以建议我如何在内循环中进行中断,以便在找到匹配后跳出来?我已经看过允许这样做的JS代码,但是不能在groovy中找到类似的东西

事实上,以上是最有气味的代码...但我必须以某种方式润滑关节..这已经很久了! :)

与以往一样,任何提示都表示赞赏。

2 个答案:

答案 0 :(得分:1)

列表在Groovy中有一个交叉方法

def a =  [ 1, 2, 3, 4, 5 ]
def b =  [ 2, 3, 6 ]


a.intersect( b ).each { item ->
  log.info "Found $item in both responses"
}

我认为那样做你想要的吗?

答案 1 :(得分:0)

def a =  ["1thing","2thing","3thing"]
def b =  ["1thing","2thing","3thing","4thing"]

// should return any element not in both lists
if (a.size < b.size ) {
   b - a
} else {
   a - b
}