2017-07-31 1 views
3

Encore nouveau à groovy ici mais j'essaie d'obtenir toutes les valeurs de chaque carte dans ma liste de cartes qui ont une clé égale à "Oranges"Trouver toutes les valeurs dans une liste de cartes qui ont la clé "Oranges"

def resultSet = [ 
["Oranges":123456, "Apples": "none"],["Oranges":7890, "Apples": "some"] 
] 
def fruit = resultSet.each{ 
    it.findAll{key, value -> key == "Oranges"}.value 
} 

println fruit 

donc pour cela, je pense que le résultat soit: [123456, 7890] mais je reçois: [[Oranges:123456, Apples:none], [Oranges:7890, Apples:some]]

Répondre

5

le retour de la méthode each est la collection elle-même. Vous souhaitez appliquer une sorte de filtre sur la collection, et non sur chacun de ses éléments. Je suggère d'utiliser findResults, car il va filtrer les valeurs nulles et vides:

def resultSet = [ 
    ["Oranges":123456, "Apples": "none"], 
    ["Oranges":7890, "Apples": "some"] 
] 

def fruit = resultSet.findResults { it.Oranges?.value } 

assert fruit == [123456, 7890] 
+0

Merci @Will! Je pensais, pour une raison quelconque, que chacune d'elles serait répétée sur chaque carte de ma liste. Je n'ai pas remarqué que c'était vu comme une collection – JonathanScialpi

+0

Content de vous aider :-) – Will