1
我已經閱讀了很多帖子,但似乎沒有人這樣做,這有點棘手。包含紅寶石數組哈希陣列的散列
說我有一個包含數組作爲其值之一的散列。
hash = {
:a => 'one',
:arr => [
{:id => 'ten', :amount => 10, :b => 'two'},
{:id => 'twenty', :amount => 20, :b => 'two'},
{:id => 'apple', :amount => 7, :b => 'applesauce'}
],
:c => 3
}
欲將此轉換爲哈希值的陣列(這將是所包含的陣列的大小的),如下所示:
# => [
{:a => 'one', :id => 'ten', :amount => 10, :b => 'two', :c => 3},
{:a => 'one', :id => 'twenty', :amount => 20, :b => 'two', :c => 3},
{:a => 'one', :id => 'apple', :amount => 7, :b => 'applesauce', :c => 3}
]
轉換應保持任何鍵/值對是內部和陣列外,最好我能傳遞數組的關鍵要求它執行的操作:
flatten_hash_array(hash, :arr)
我意識到了Ruby flatten
Array類中是不是有什麼 我們需要。抓住動詞!任何幫助,將不勝感激。
太棒了! hash.reject塊只需要通過k,v,它就像一個魅力。謝謝! def flatten_hash_array(hash,key) hash [key] .map {| entry | entry.merge(hash.reject {| k,v | k == key})} end – adamrneary 2012-02-03 18:10:16
嗯,必須是1.8/1.9的差異 - 我的Ruby接受'hash.reject {| k |}',即使有是兩個可用的參數。但是,嘿 - 很高興它適合你。 – Chowlett 2012-02-03 21:22:00