Sébastien :
dans un tableau de tableaux je souhaite retrouver le première
element en ne connaissant que le deuxième. Dans le cas
suivant, comment récupérer “key_1” quand on ne connait que
“value_1”
Est-ce que tu veux récupérer le premier tableau dont le dernier
élément est “value_1” ? ou tous les tableaux dont le dernier élément
est “value 1” ?
MY_ARRAY = [
[“key_1”, “value_1”],
[“key_2”, “value_2”]
]
supposes que tu as :
ary = [ [“key_1”, “value_1”], [“key_2”, “value_2”], [“key_3”, “value_1”]
]
tu veux result = [ [“key_1”, “value_1”] ]
ou result = [ [“key_1”, “value_1”], [“key_3”, “value_1”] ] ?
Y’a bien une solution mais pas très optimisé je trouve:
def my_fonction(value)
for elements in MY_TABLE
(return elements[0]) if elements[1] == value
end
return nil
end
Si vous avez mieux je suis une fois de plus preneur 
Une sous Rails avec group_by :
hash = ary.group_by { |pair| pair.last }
result = hash[‘value2’] # tous
result = hash[‘value2’].first # seulement le premier tableau
Sinon, de manière classique :
result = ary.detect { |pair| pair.last == “value2” } # le premier
result = ary.select { |pair| pair.last == “value2” } # tous
Remarque : ary.find { |pair| pair.last == “value2” }
et ary.find_all { |pair| pair.last == “value2” } marchent aussi
mais préférez #detect et #select sous Rails pour éviter les
confusions avec AR::B#find.
-- Jean-François.