【Ruby】配列内の重複した要素を取り除く

uniqメソッド

uniqは、配列内の重複した要素を取り除いて、新しい配列を返すメソッドです。

*Rails5以前であれば、モデルに対して重複したレコードも一つにまとめることができましたが、Rails5以降はdistinctメソッドが正式メソッドとなったため、モデルに対しては使えません。

参考例

以下のような配列に対しuniqを使うと、重複した”5”が一つにまとまりました。

arr = [1, 2, 3, 4, 5, 5, 5, 5, 5]

arr.uniq
=> [1, 2, 3, 4, 5]

またuniqは以下のように、引数にブロックを取ることもできます。

members = ["ogino", "fujiwara", "nakamura", "OGINO"]

members.uniq{ |name| name.upcase }
=> ["ogino", "fujiwara", "nakamura"]

この場合だと、upcaseで大文字でも重複しているとみなすので、”OGINO”は一つにまとめられました。

タイトルとURLをコピーしました