map、select、reject
変換とフィルタリングです。
「map、select、reject」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。
mapによる変換
mapは各要素にブロックを実行して新しい配列を作成します。元の配列は変わりません。
nums = [1, 2, 3]
doubled = nums.map { |n| n * 2 }
puts doubled.inspect
puts nums.inspect文字列でのmap
mapは、単語を大文字に変換するなど、あらゆる種類の値を変換できます。
words = ["red", "green"]
puts words.map { |w| w.upcase }.inspectシンボルによる省略記法
ブロックの処理が1つのメソッドを呼び出すだけなら、&:methodという省略記法を使えます。
words = ["a", "b", "c"]
puts words.map(&:upcase).inspectインデックス付きのmap
位置も必要な場合は、with_indexをつなげます。
letters = %w[a b c]
result = letters.map.with_index { |l, i| "#{i}:#{l}" }
puts result.inspectselectによるフィルタリング
select(別名はfilter)は、ブロックがtrueになる要素だけを残します。
nums = [1, 2, 3, 4, 5, 6]
evens = nums.select { |n| n.even? }
puts evens.inspect文字列のフィルタリング
selectでは任意の条件を使えます。たとえば、長い単語だけを残せます。
words = ["hi", "hello", "hey", "welcome"]
puts words.select { |w| w.length > 3 }.inspectrejectによる除外
rejectはselectと反対の動作をします。ブロックがtrueになる要素を除外します。
nums = [1, 2, 3, 4]
puts nums.reject { |n| n.even? }.inspectmapとselectの連結
各メソッドは新しい配列を返すため、メソッドをパイプラインのように連結できます。
nums = [1, 2, 3, 4, 5]
result = nums.select { |n| n.odd? }.map { |n| n * 10 }
puts result.inspectfilter_map
filter_mapはフィルタリングと変換を1回の処理で組み合わせます。ブロックの結果がfalseでない要素を残します。
nums = [1, 2, 3, 4]
result = nums.filter_map { |n| n * 2 if n.even? }
puts result.inspectflat_map
flat_mapは変換を行った後、入れ子になった配列を1段階平坦化します。
pairs = [[1, 2], [3, 4]]
puts pairs.flat_map { |p| p }.inspectpartition
partitionはコレクションを、一致する要素と一致しない要素の2つの配列に分けます。
nums = [1, 2, 3, 4, 5]
evens, odds = nums.partition { |n| n.even? }
puts evens.inspect
puts odds.inspectクイックチェック
変換とフィルタリングについて確認しましょう。
まとめ
変換とフィルタリングを使いこなせるようになりました。
mapで変換し、&:methodで省略するselect/filterとreject- メソッドの連結、
filter_map、flat_map、partition
次は、集計に使うreduceとeach_with_objectを詳しく学びます。
puts [1, 2, 3, 4].select(&:even?).map { |n| n * n }.inspectAI チューターと学ぶ Ruby — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 29
- レッスン
- 109
よくある質問
「map、select、reject」レッスンは無料ですか?
はい。「map、select、reject」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。
「map、select、reject」で何を学びますか?
変換とフィルタリングです。 ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ruby Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「map、select、reject」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このRuby Academyレッスンでコードを書いて実行できますか?
はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 範囲の作成
- Enumerable モジュール
- map、select、reject
- reduce と each_with_object