LoginSignup
2
2

More than 3 years have passed since last update.

覚えてますか… each.with_index

Last updated at Posted at 2019-05-28

each.with_indexとは!?

さて、このeach.with_indexですが、2つのメソッドが組み合わさったものでした。
1つずつ振り返りましょう。

eachメソッド

image.png
eachメソッドは、範囲オブジェクトの中の要素を順に取得して変数に格納し、「do」から「end」までの処理を実行するんでしたよね!!(範囲オブジェクトに含まれる要素が無くなるまで繰り返し行われます。)
pictweetでは、投稿したツイートを表示する際などに、利用していたお馴染みのメソッドでしたね。

with_indexメソッド

こちらがなかなか聴きなれないメソッドでした!! こちらは、データに番号を振りたい時に使えるメソッドで、今回のようにeachメソッドと一緒にしてeach.with_indexとして使ったり、map.with_indexとかselect.with_index sort_by.with_indexなどとして合わせて使うことが多いようですね。

each.with_indexの使い方

上記2つのメソッドの組み合わせなので、そのままですが、each.with_indexを使うと要素の数だけ処理を繰り返し実行し、繰り返しごとに番号が振ることができます。以下のようなコードでは、pikachuという配列オブジェクトの要素を順に要素の数だけブロックを繰り返し実行し、繰り返しごとに | で囲われている部分の i に番号が入ります。
image.png
これをターミナルで実行するとこのようになりました!!
image.png
番号が振られましたね!! お、前に配列を勉強した時のように、番号を振られるのもデフォルトでは0から順になるようですね。

でも、ピカチュウの進化を考えると、第一形態→第二形態→第三形態とかいうわけですから、1から番号が振りたいですね。そういう時はwith_index(1)のように、開始したい番号を記述しましょう。
image.png
こうするとこうなります。
image.png
1番から番号が振られましたね!!

ちなみに、Moooviの開発の際には、それぞれの映画に対する「いいね!」の評価をランキング形式にして、
そのランキング順で番号を振る際に、このメソッドが利用されていました。

しっかり復習しながら、使えるようにしていきたいですね!!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2