Menu
Coddy logo textTech

selectとreject

CoddyのRubyジャーニー「ロジックとフロー」セクションの一部。レッスン 21/56。

selectメソッドは、ブロックが真と評価される値を返す要素だけを含む新しい配列を返します。Rubyでの「filter」の表記方法です。

numbers = [1, 2, 3, 4, 5, 6]
evens = numbers.select { |n| n.even? }
puts evens.inspect   # [2, 4, 6]

reject はその逆で、ブロックが false を返すものをすべて保持します:

odds = numbers.reject { |n| n.even? }
puts odds.inspect    # [1, 3, 5]

どちらも新しい配列を返し、元の配列は変更されません。

ブロックは単なる述語であり、true または false と評価されるものなら何でも機能します。

words = ["hi", "hello", "hey", "yo"]
long  = words.select { |w| w.length >= 3 }
puts long.inspect    # ["hello", "hey"]
challenge icon

チャレンジ

初心者

カンマ区切りの整数のリストを読み取ります。2行を出力します。

  1. 10より大きい数(selectを使用)を、, で連結したもの
  2. 3で割り切れない数(rejectを使用)を、, で連結したもの

入力が3,7,12,15,20の場合、出力は次のようになります。

12, 15, 20
7, 20

自分で試してみよう

numbers = gets.chomp.split(",").map(&:to_i)

# TODO: 1行目、numbers > 10、", " で結合
# TODO: 2行目、3で割り切れない numbers、", " で結合
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: Rubyオンラインコンパイラ