我有一系列哈希,像这样:
[
{"name"=>"Bob Jones", "id"=>"100005913544738"},
{"name"=>"Jimmy Smith", "id"=>"100005934513815"},
{"name"=>"Abe Lincoln", "id"=>"100005954493955"}
]
我最终只想将这些id放在数组中,如下所示:
[ 100005913544738, 100005934513815, 100005954493955 ]
我正在运行Ruby 1.9.3。
答案 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]