根据ruby中的某些条件获取父节点

时间:2017-11-07 11:41:55

标签: ruby

我有一个像下面这样的哈希。

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费用"作为价值。

2 个答案:

答案 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 }