2014-06-23 109 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_都是未使用塊變量的佔位符;前者可以用來指示塊變量在被使用時如何被寫入。