2012-05-24 48 views
2

我有一個哈希:如何從數組中得到一個具有值的哈希值?

a = { 
    "person" => [ 
    { 
     "age"  => ["0"], 
     "details" => [ 
     { 
      "hobby" => ["6"], 
      "interest" => ["programming"] 
     } 
     ] 
    } 
    ] 
} 

我想獲得的「詳細信息」的值。這種簡單的方法將是

a["person"].first["details"].first 

但是,它太長,看起來不好。有沒有其他辦法可以做到這一點?

+2

對我很好。 –

+0

感謝您的評論! :) –

+0

訪問是好的,如果這些數組不是真的需要,可以改進原始哈希。 – tokland

回答

3

如果基於散列的結構你的搜索條件,最簡單的方法要做到這一點,將在訪問命令中表示這個結構。

如果你想幾個字符少,那就是:

a["person"][0]["details"][0] 

如果根據鍵值名搜索條件,你可以創建哈希類自己的功能來搜索在嵌套哈希和做這樣的事情:

a.search(:details).first 

如果你不喜歡方括號,通過屬性使用哈希https://github.com/intridea/hashie和訪問數據:

a.person.first.details.first 

無論如何,你什麼都不能做,因爲你的代碼對於任何rubyist來說都很平常。

3

從哈希中獲取值的原始代碼對我來說看起來不錯。如果你想要做的東西更好,這只是修改散列:

a = {"person"=>{"age"=>["0"], "details"=>{"hobby"=>["6"], "interest"=>["programming"]}}} 

然後你就可以得到更好的方式訪問:

a['person']['details'] #=> {"hobby"=>["6"], "interest"=>["programming"]} 
相關問題