从ruby中获取哈希值

时间:2014-06-23 06:19:45

标签: ruby hash

我的哈希看起来像这样:

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

我想从这个散列中得到数组中的这个“10”和“9”值。我怎样才能做到这一点? 提前谢谢!

3 个答案:

答案 0 :(得分: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}

答案 1 :(得分:3)

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

答案 2 :(得分:1)

假设您想要与键"car_addition_id"关联的值(而不是表达式中那些位置出现的任何键),最简单的方法是:

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

当内部哈希包含多个键/值对时,这当然有效。

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