重複した要素の削除


配列から重複した要素を削除するには、配列のuniqメソッドを利用します。

次の例では、arr配列から重複した「1」という要素が削除された配列が返され、uniq_arr配列にセットされます。

arr = [1, 2, 3, 1]
uniq_arr = arr.uniq

メソッドを呼んだ配列自体を変更させたい場合は、uniqの代わりにuniq!メソッドを利用します。

uniq!の場合、削除が行われた場合は自身selfを、行われなかった場合はnilを返します。

arr = [1, 2, 3, 1]
arr.uniq

また、重複したオブジェクトを削除したい場合は、ブロックを利用します。

次の例では、users配列に含まれるuserオブジェクトの中でid属性が同じものを削除しています。

users.uniq { |u| u.id }