给定一个哈希 -
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"]
是否等于第二个参数即存在["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