我有一个像下面这样的哈希。
prop = {"Pets"=>[]},
{"Misc"=>["HOA Frequency: (C101)"], "photos"=>nil},
{"Legal and finance"=>["HOA fee: $300.0"], "photos"=>nil}
我需要根据某些条件获得法律和财务节点。
我试过以下。
prop.find { |feature| feature.keys.include?("Legal and finance") }
但有时HOA费用将在不同的节点下。它可能在" Finance"或者"法律和金融"或者"家庭财务"像
{"Finance"=>["HOA fee: $300.0"], "photos"=>nil} or
{"Home Finance"=>["HOA fee: $300.0"], "photos"=>nil}
所以我需要通过检查任何节点是否包含文本来获得完整的节点" HOA费用"作为价值。
答案 0 :(得分:1)
prop.find do |feature|
feature.values.flatten.compact.any? do |value|
value.include?("HOA Fee")
end
end
然而,这是一个非常混乱的数据结构。
我强烈建议您重构代码以将数据存储在明确定义的对象中,而不是散列数组的散列......
答案 1 :(得分:0)
我会做这样的事情:
prop.find { |hash| hash.keys.any? { |key| key.downcase.include?('finance') } }
#=> { "Legal and finance" => ["HOA fee: $300.0"], "photos" => nil }