我有一个如下所示的地图矩阵:
def matrix = [
field1:[role1:[state1:["f1r1s1",true],
state2:["f1r1s2",false]],
role2:[state1:["f1r2s1",true],
state2:["f1r2s2",false]]
],
field2:[role1:[state1:["f2r1s1",true],
state2:["f2r1s2",false]],
role2:[state1:["f2r2s1",true],
state2:["f1r2s2",false]]
]
]
我正在尝试获取角色为“role1”且状态为“state1”的所有字段。简单?请帮助。
答案 0 :(得分:6)
matrix.values().role1.state1
适用于这种情况,因为你只有一个未知的搜索范围。
答案 1 :(得分:4)
你可以这样做:
def map = matrix.inject([:]) { map, elem -> map << [ (elem.key): elem.value[ 'role1' ][ 'state1' ] ] }
获得所需结果:
[field1:[f1r1s1, true], field2:[f2r1s1, true]]