Ruby 配列からnilを削除する

  • 作成日 2021.09.25
  • 更新日 2022.05.22
  • Ruby
Ruby 配列からnilを削除する

Rubyで、compactを使用して、配列からnilを削除するサンプルコードを記述してます。rubyのバージョンは2.7.2を使用してます。

環境

  • OS windows10 pro 64bit
  • ruby 2.7.2p137

compact使い方

compactを使用すれば、配列からnilを削除することが可能です。

# 元の配列は変わらない
配列.compact

# 元の配列も変わる
配列.compact!

以下は、配列からnilを削除するサンプルコードとなります。

arr = [ "a", nil, "b", nil, "c"]

p arr.compact
# ["a", "b", "c"]

p arr
# ["a", nil, "b", nil, "c"]

p arr.compact!
# ["a", "b", "c"]

p arr
# ["a", "b", "c"]

delete_ifを使用することもできます。

arr = [ "a", nil, "b", nil, "c"]

p arr.delete_if{ |x| x.nil? }
# ["a", "b", "c"]

p arr
# ["a", "b", "c"]

rejectを使用しても同じです。

arr = [ "a", nil, "b", nil, "c"]

p arr.reject{ |x| x.nil? }
# ["a", "b", "c"]

p arr
# ["a", nil, "b", nil, "c"]

p arr.reject!{ |x| x.nil? }
# ["a", "b", "c"]

p arr
# ["a", "b", "c"]

パフォーマンスは圧倒的に、compactが一番いいです。

【参考】 同じコードを1000万回実行した結果

                 user     system      total        real
#compact!    0.625000   0.000000   0.625000 (  0.643709)
#delete_if   2.390000   0.000000   2.390000 (  2.465789)
#reject!     2.547000   0.016000   2.563000 (  2.770027)