从哈希数组中拉出键值?

时间:2013-05-16 18:20:25

标签: ruby arrays hash

我有一系列哈希,像这样:

[
   {"name"=>"Bob Jones", "id"=>"100005913544738"},
   {"name"=>"Jimmy Smith", "id"=>"100005934513815"},
   {"name"=>"Abe Lincoln", "id"=>"100005954493955"}
]

我最终只想将这些id放在数组中,如下所示:

[ 100005913544738, 100005934513815, 100005954493955 ]

我正在运行Ruby 1.9.3。

2 个答案:

答案 0 :(得分:8)

a = [{"name"=>"Bob Jones", "id"=>"100005913544738"},
     {"name"=>"Jimmy Smith", "id"=>"100005934513815"},
     {"name"=>"Abe Lincoln", "id"=>"100005954493955"}]

a.map{|h| h['id'].to_i}
# => [100005913544738, 100005934513815, 100005954493955]

Enumerable#map是一种非常方便的方法。

似乎值得注意的是,如果您可以控制原始数组的生成,那么使用符号(例如,:name:id)会更像Ruby,而不是字符串作为哈希键。这有many reasons

答案 1 :(得分:0)

h = [
   {"name"=>"Bob Jones", "id"=>"100005913544738"},
   {"name"=>"Jimmy Smith", "id"=>"100005934513815"},
   {"name"=>"Abe Lincoln", "id"=>"100005954493955"}
]

h.map{|i| i.fetch("id").to_i}
#=> [100005913544738, 100005934513815, 100005954493955]