u16suzuの blog

日々学んだことのメモブログです。

Ruby map メソッドの便利な使い方

Ruby でコードを書くときに、ハッシュの値を取り出して配列に入れたい時が多々あります。
例えば、こんなふうに。

h = {:key1 => "dog", :key2 => "cat", :key3 => "rat"}

a = []
h.each { |key, val| a << val }

p a # => ["dog", "cat", "rat"]

自前で配列を準備するのは面倒だし、Ruby だったらもう少し綺麗に書けそうですね。
演算結果を配列に入れて返してくれるmap メソッドを使用すれば、次のように1行で書くことができます。

h = {:key1 => "dog", :key2 => "cat", :key3 => "rat"}
res = h.map{ |key, val| val }

p res # => ["dog", "cat", "rat"]

便利ですね!

追記--
@willnet さんからコメント頂きました。
Hash#values を使っても、お手軽に同じ結果が得られました。

h = {:key1 => "dog", :key2 => "cat", :key3 => "rat"}
p h.values

こちらを使ったほうが良いですね。
@willnet さんありがとう御座います!