与えられたハッシュ -
hash = {
1 => {"ID" => ["NUMBER", 11] },
2 => {"TITLE" => ["VARCHAR2", 5] },
3 => {"FIRST_NAME" => ["VARCHAR2", 50] },
4 => {"LAST_NAME" => ["VARCHAR2", 50] },
5 => {"BIRTH_DATE" => ["DATE", -2] }
}
および 2 つの入力パラメータ -"FIRST_NAME"
および["VARCHAR2",50]
.
最もエレガントな方法は何ですか -
"FIRST_NAME"
ネストされたハッシュのキーとして存在するかどうかを確認します。hash[3]["FIRST_NAME"]
また、 の値が2 番目のパラメータと等しいかどうかが存在する場合、つまり["VARCHAR2",50]
.- そして、これら 2 つのパラメータが一致する場合、値がこのネストされたハッシュ、つまりこの場合は 3 であるキーを返します
現在、私は次のことを行っています-
array = hash.values.map {|h| h.to_a}.flatten(2)
puts hash.key(Hash["FIRST_NAME",["VARCHAR2",50]]) if !(index = array.index("FIRST_NAME")).nil? ? array[index+1] == ["VARCHAR2",50] : false # 3