Array#compact

Array#compactは、nil以外の要素を集めた新しい配列を作って返します。
まず、compactしない場合の例。

p [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7].map {|k|
  if k >= 5 then k else nil end
}
#=> [nil, nil, nil, nil, 5, 9, nil, 6, 5, nil, 5, 8, 9, 7]

compactすると、次のようになります。

p [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7].map {|k|
  if k >= 5 then k else nil end
}.compact
#=> [5, 9, 6, 5, 5, 8, 9, 7]

要素からnilが消えました。