如何将数组添加到数组(索引位置到索引位置?)以在Groovy脚本中创建多维数组

时间:2015-06-27 16:53:15

标签: arrays multidimensional-array groovy soapui

我在两个单独的列表中有两组数据(我使用了soapui open groovy脚本) - 已经通过_inner_func不确定这是否重要

XmlSlurper().parseText()

我希望将它们组合在一起(位置0到位置0然后位置1到位置1等)就像这样

a = [c1,c2,c3] 
b = [0 100, 0 50 100, 0 500 1000]

到目前为止我的代码

c = [[c1,0 100],[c2,0 50 100],[c3,0 500 100]]

当我def splitList(list, splitAt) { list.inject([]) { curr, val -> if(curr.size() == 0 || val == splitAt) { curr << [] } curr[-1] << val curr } } def c = [a, splitList(b, 0)].transpose()*.flatten() 时,我得到log.info c

2 个答案:

答案 0 :(得分:2)

你可以这样做......

count = 0
c = a.collect {
    [it, b[count++]]
}

该代码会跳过任何错误处理,并假设ab具有相同数量的元素。

答案 1 :(得分:1)

所以,鉴于你的两个清单:

def a = ['c1','c2','c3']
def b = [0, 100, 0, 50, 100, 0, 500, 1000]

您可以定义一个在每次看到给定值时拆分列表的函数:

def splitList(list, splitAt) {
    list.inject([]) { curr, val ->
        if(curr.size() == 0 || val == splitAt) {
            curr << []
        }
        curr[-1] << val
        curr
    }
}

因此,调用splitList(b, 0)会返回[[0, 100], [0, 50, 100], [0, 500, 1000]]

然后使用此(以及transposeflatten)获取:

def c = [a, splitList(b, 0)].transpose()*.flatten()

那样:

assert c == [['c1', 0, 100], ['c2', 0, 50, 100], ['c3', 0, 500, 1000]]