2014-06-23 107 views
0

从哈希值我有散,看起来像这样:获取红宝石

{"0"=>{"car_addition_id"=>"9"}, "1"=>{"car_addition_id"=>"10"}} 

我想从这个散列只有这个“10”和阵列“9”值来获得。我怎样才能做到这一点? 在此先感谢!

回答

4

尝试了这一点:

h = {"0"=>{"car_addition_id"=>"9"}, "1"=>{"car_addition_id"=>"10"}} 
    h.map{|k,v| v.values}.flatten 
    => ["9", "10"] 

或按@gotva

h.flat_map{|k,v| v.values} 
+0

这是伟大的,非常快速的答案。谢谢! –

+3

,你可以使用['flat_map'](http://apidock.com/ruby/Enumerable/flat_map)代替'map' +'flatten' – gotva

+1

@gotva多数民众赞成好。 –

3
{"0"=>{"car_addition_id"=>"9"}, "1"=>{"car_addition_id"=>"10"}} 
.values.flat_map(&:values) 
# => ["9", "10"] 
1

假设你想用钥匙"car_addition_id"(而不是什么关键在这些位置出现在相关的值表达),最直接的方法是:

h.map { |_k,v| v["car_addition_id"] } 
    #=> ["9", "10"] 

这当然适用于内部哈希包含多个键/值对的情况。

对于那些不熟悉符号的人,_k_都是未使用块变量的占位符;前者可以用来指示块变量在被使用时如何被写入。