配列値を持つハッシュを 1 つの配列にマージする方法:
h = {
one: ["one1", "one2"],
two: ["two1", "two2"]
}
マージ後は次のようになります。
["one1","one2","two1","two2"]
h.flat_map &:last
=> ["one1", "one2", "two1", "two2"]
h.values.flatten
# => ["one1", "one2", "two1", "two2"]
もちろん、キーについても同じことができます。ここで必要な唯一の理由flatten
は、値自体が配列であるため、h.values
単独で が返されるため[["one1", "one2"], ["two1", "two2"]]
です。
また、merge
参考までに、 Ruby では別の (そして非常に便利な) ことを意味します。
(@tokland のコメントに従って) 1 つのレベルのみを平坦化することを確認したい場合は、flatten
with などのオプションの引数を指定できますflatten(1)
。