Rubyよく使用するメソッド一覧

【Ruby rails】配列の要素を除外するreject、reject!メソッドの使い方を徹底解説

Rubyのrejectとreject!メソッド:条件に合わない要素を選択する

Rubyの配列操作において、特定の条件に基づいて要素を除外したい場合はあると思います。

rejectとreject!メソッドはこの目的に特化しており、配列から条件に合わない要素を選択する際に利用されます。

この記事では、これらのメソッドの使い方、違い、そして実践的な使用例を詳しく解説します。

rejectメソッドの基本

rejectメソッドは、ブロックで与えられた条件に一致しないすべての要素を集めた新しい配列を返します。

重要な点は、元の配列は変更されないことです。

基本的な使用方法

特定の条件に合わない要素を配列から除外します。

ソースコード例: rejectメソッドの基本的な使用



この例では、偶数を除外した新しい配列が作成されます。

 出力結果
1
3
5
サルモリ
「rejectメソッドは条件に合わない要素だけを集めてくれるんだね!」

reject!メソッドの基本

reject!メソッドは、rejectメソッドと同じ条件で要素を除外しますが、大きな違いは元の配列自体を変更することです。

このメソッドを使うと、配列から直接条件に合わない要素が除去されます。

破壊的な方法で要素を除外する

元の配列から直接条件に合わない要素を除外します。

ソースコード例: reject!メソッドの使用



この例では、元の配列から偶数が除去されます。

 出力結果
1
3
5
サルモリ
「reject!メソッドは元の配列を変更してしまうんだね。注意が必要だね!」

rejectとreject!の違い

rejectとreject!の主な違いは、元の配列を変更するかどうかです。rejectは元の配列を変更せず、新しい配列を返します。一方でreject!は元の配列を直接変更します。

同じ条件でrejectとreject!を使った場合

同じ条件でrejectとreject!を使用した場合の違いを確認します。

ソースコード例: rejectとreject!の違い



この例では、rejectで作成された新しい配列と、reject!によって変更された元の配列を比較します。

 出力結果
Rejected array: 2 4 6
Original array after reject!: 2 4 6
サルモリ
「reject!を使うと元の配列が変わってしまうから、使う時は慎重にね!」

応用例

rejectとreject!メソッドは、単純な数値や文字列の配列だけでなく、より複雑なオブジェクトの配列にも応用できます。

オブジェクトの配列での使用

オブジェクトを含む配列でのreject/reject!メソッドの使用例を見てみましょう。

ソースコード例: オブジェクトの配列でのreject/reject!メソッドの使用



この例では、価格が150以上の商品のみを選択します。

 出力結果
Cherry
サルモリ
「オブジェクトの配列でもrejectメソッドが使えるんだね!これは便利だね!」

実践的な使用例

複数の条件を組み合わせたrejectの使用

複数の条件を組み合わせて、より複雑なロジックで要素を除外する例を見てみましょう。

ソースコード例: 複数の条件を組み合わせたrejectの使用



この例では、負の数と偶数を除外して、正の奇数のみを選択します。

 出力結果
3
5
サルモリ
「複数の条件を組み合わせると、もっと具体的な要素を選べるんだね!」

reject!の注意点

reject!メソッドを使用する際には、元の配列が変更されることに注意が必要です。元の配列を保持したい場合はrejectメソッドを使用するか、dupメソッドで配列を複製することを検討してください。

元の配列を保持しつつreject!を使用する

reject!を使用しても元の配列を保持する方法を見てみましょう。

ソースコード例: 元の配列を保持しつつreject!を使用する



この例では、dupメソッドで配列を複製し、複製した配列でreject!を使用します。

 出力結果
Original array: 1 2 3 4 5 6
Duplicate array after reject!: 1 3 5
サルモリ
「複製してからreject!を使うと、元の配列はそのままでいられるんだね!」

まとめ

Rubyのrejectとreject!メソッドは、配列から特定の条件に合わない要素を効率的に除外するためのメソッドです。

これらのメソッドを適切に使用することで、Rubyプログラミングにおける配列操作の幅が広がります。

元の配列を変更するかどうかを理解し、状況に応じて適切なメソッドを選択することが重要です。

最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!

-Rubyよく使用するメソッド一覧

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock