Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

RubyUniqメソッドを使用して重複を削除する方法

uniqを使用 メソッドは、配列からすべての重複要素を削除できます。

それがどのように機能するか見てみましょう!

このようなアレイがある場合

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

番号1 複製されます。

uniqを呼び出す この配列では、余分な配列が削除され、一意の番号を持つ新しい配列が返されます。

n.uniq

# [1,2,3,4,5]

uniqに注意してください nは変更されません (元の配列)なので、 uniq!を呼び出す必要があります 、または新しいアレイを保存します。

unique_numbers = n.uniq

とても簡単ですよね?

しかし、多くの人はその uniqを知りません ブロックを取ります。

ブロックを使用すると、より多くの高度なを実行できます 物事。

説明させてください…

ブロックでRubyUniqメソッドを使用する方法

uniqを呼び出すとき 、配列要素からハッシュを作成することで機能します。

すべての要素がハッシュのキーになります。

ハッシュキーは一意であるため、ハッシュ内のすべてのキーのリストを取得できます。このリストは、一意の要素を持つ新しい配列になります。

何かをユニークにするものを変更したい場合は、ブロックを渡すことができます。

ここに例があります

fruits = %w(orange apple banana)

「オレンジ」と「バナナ」の長さは同じ6文字です。

uniqを使用する場合 このように

fruits.uniq(&:size)

# ["orange", "apple"]

次に、文字列をサイズで比較すると重複するため、「バナナ」を削除します。

別の例

objects = [1, 2, "a", "b", :c, :d]

objects.uniq(&:class)

これにより、クラスごとに一意のオブジェクトを含む配列が取得されます:

[1, "a", :c]

これの力がわかりますか?

ブロックをuniqに渡すとき 、何かが一意であると見なされるルールによって正確に定義できます。

複数の条件でUniqを使用する方法

複数の条件を使用できます!

方法は次のとおりです

ユーザーがいるとしましょう クラス、with:

  • 年齢
  • 名前

同じ年齢の国ごとに1人だけが必要です。

ブロックで簡単

[david, petter, raphael].uniq { |person| [person.age, person.country] }

このコードでは、何かが一意であると見なされる前に、両方の条件が一致する必要があります。

これはどのように機能しますか?

ブロックがないと、オブジェクトはハッシュキーになります。

ブロックを使用すると、生成された値がハッシュキーになり、オブジェクトがハッシュ値になります。

次に…

Rubyは値を受け取り、それらを新しい配列として返します。

これらは単なる実装の詳細ですが、非常に興味深いと思うので、皆さんと共有したいと思いました。

概要

uniqについて学習しました Rubyのメソッド!正確な使用方法、なぜそれが役立つのか、そしてどのように機能するのか。

覚えておくために、この方法で練習してください。

読んでくれてありがとう!


  1. Ruby Grepメソッドの使用方法(例付き)

    grepについて話しましょう メソッド。 この方法で何ができますか? Grepを使用して、配列や範囲などの列挙可能なオブジェクトをフィルタリングできます。 「しかし、selectはすでにそれを行っています!」 はい。ただし、grepの動作は異なり、結果も異なります。 いくつかの例を見てみましょう。 RubyGrepメソッドの例 この配列が与えられた場合: objects = [a, b, c, 1, 2, 3, nil] grepを使用して文字列のみを取得できます : objects.grep(String) # [a, b, c] 整数のみ: objects.g

  2. Ruby Mapメソッドの使用方法(例付き)

    Mapは、配列、ハッシュ、範囲で使用できるRubyメソッドです。 マップの主な用途は、データを変換することです。 例 : 文字列の配列が与えられた場合、すべての文字列に目を通し、すべての文字を大文字にすることができます。 または、Userのリストがある場合 オブジェクト… 変換できます 対応するメールアドレス、電話番号、またはその他の属性のリストにそれらを追加します Userで定義 クラス。 これを行う方法を正確に見てみましょう! ルビーマップ構文 マップの構文は次のようになります: array = [a, b, c] array.map { |string| string.