Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Ruby mapメソッドについて

More than 1 year has passed since last update.

はじめに

エンジニア1年生です。
日々の学びのメモとしてコツコツと記事を書こうと思っています。
今回はmapメソッドの使い方について書いていきます。

mapとは?

配列の要素の数だけ繰り返し処理を行うメソッドです。

mapメソッド

書き方は
配列の入った変数.map {|変数名| 処理内容 }
です。

mapは処理後に戻り値で配列を作成してくれます。
元の配列が上書きされることはありません。

例として配列の要素の文字数をmapメソッドで取得して変数に入れてみます。

controller.rb
  animal = ["dog", "cat", "koara","bird"]
  animal.map {|a| a.length}

結果

  animalの中身は ["dog", "cat", "koara","bird"]
  戻り値は [3, 3, 5, 4]

このようにmapは戻り値で配列を作成してくれます。

map!メソッド

配列の値を処理結果に置き換えたい場合に使用します。
map!は元の配列を戻り値に置き換えます。

controller.rb
  animal = ["dog", "cat", "koara","bird"]
  animal.map! {|a| a.length}

結果

  animalの中身は [3, 3, 5, 4]
  戻り値は [3, 3, 5, 4]

このようにmap!は配列の要素を処理の結果と入れ替えます。

eachとの違い

 戻り値が異なります。
 mapは配列を作成して返してくれるのに対して
 eachの戻り値はレシーバ自体が返ってきます。

controller.rb
  animal = ["dog", "cat", "koara","bird"]
  animal.each {|a| a.length}

結果

  animalの中身は ["dog", "cat", "koara","bird"]
  戻り値は ["dog", "cat", "koara","bird"]
ecoyamas
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away