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